diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..6c4354b --- /dev/null +++ b/.env.example @@ -0,0 +1,34 @@ +# Postgre +POSTGRES_USER=universe +POSTGRES_PASSWORD= +POSTGRES_DATABASE=universe + +# Azure AD +AzureAd_Instance=https://login.microsoftonline.com/ +AzureAd_TenantId=sfedu.ru +AzureAd_ClientId= +AzureAd_ClientSecret= +AzureAd_Domain=sfedu.onmicrosoft.com +AzureAd_CallbackPath=/signin-oidc + +# JWT +JWT_SECRET= +JWT_ISSUER=UniVerse +JWT_AUDIENCE=UniVerse +JWT_ACCESS_TOKEN_EXPIRATION_MINUTES=30 +JWT_REFRESH_TOKEN_EXPIRATION_DAYS=30 + +# CORS +CORS_ALLOWED_ORIGINS=http://localhost:3000 + +# LLM +LLM_BASE_URL= +LLM_API_KEY= +LLM_MODEL= + +# Modeus API +MODEUS_API_BASE_URL= +MODEUS_API_KEY= + +# Gamification +GAMIFICATION_XP_THRESHOLDS=[0, 100, 300, 600, 1000, 1500, 2500, 4000] \ No newline at end of file diff --git a/backend/docker-compose-prod.yml b/backend/docker-compose-prod.yml index 1e3f650..e9f40dd 100644 --- a/backend/docker-compose-prod.yml +++ b/backend/docker-compose-prod.yml @@ -7,12 +7,32 @@ services: - "8088:8080" environment: - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true - - AzureAd:Instance=https://login.microsoftonline.com/ - - AzureAd:TenantId=sfedu.ru - - AzureAd:ClientId= - - AzureAd:ClientSecret= - - AzureAd:Domain=sfedu.onmicrosoft.com - - AzureAd:CallbackPath=/signin-oidc + + - AzureAd:Instance=${AzureAd_Instance:-https://login.microsoftonline.com/} + - AzureAd:TenantId=${AzureAd_TenantId:-sfedu.ru} + - AzureAd:ClientId=${AzureAd_ClientId} + - AzureAd:ClientSecret=${AzureAd_ClientSecret} + - AzureAd:Domain=${AzureAd_Domain:-sfedu.onmicrosoft.com} + - AzureAd:CallbackPath=${AzureAd_CallbackPath:-/signin-oidc} + + - Jwt:Secret=${JWT_SECRET} + - Jwt:Issuer=${JWT_ISSUER:-UniVerse} + - Jwt:Audience=${JWT_AUDIENCE:-UniVerse} + - Jwt:AccessTokenExpirationMinutes=${JWT_ACCESS_TOKEN_EXPIRATION_MINUTES:-30} + - Jwt:RefreshTokenExpirationDays=${JWT_REFRESH_TOKEN_EXPIRATION_DAYS:-30} + + - Cors:Origins=${CORS_ALLOWED_ORIGINS:-http://localhost:3000} + + - Llm:BaseUrl=${LLM_BASE_URL} + - Llm:ApiKey=${LLM_API_KEY} + - Llm:Model=${LLM_MODEL} + + - ModeusApi:BaseUrl=${MODEUS_API_BASE_URL} + - ModeusApi:ApiKey=${MODEUS_API_KEY} + + - Gamification:XpThresholds=${GAMIFICATION_XP_THRESHOLDS:[0, 100, 300, 600, 1000, 1500, 2500, 4000]} + + - ConnectionStrings:DefaultConnection=Host=db;Port=5432;Database=${POSTGRES_DATABASE:-universe};Username=${POSTGRES_USER};Password=${POSTGRES_PASSWORD} networks: - backend @@ -26,7 +46,7 @@ services: environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - - POSTGRES_DB=${POSTGRES_DATABASE} + - POSTGRES_DB=${POSTGRES_DATABASE:-universe} networks: - backend healthcheck: diff --git a/backend/docker-compose-test.yml b/backend/docker-compose-test.yml index b924bfb..86ec590 100644 --- a/backend/docker-compose-test.yml +++ b/backend/docker-compose-test.yml @@ -9,12 +9,32 @@ services: - "8088:8080" environment: - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true - - AzureAd:Instance=https://login.microsoftonline.com/ - - AzureAd:TenantId=sfedu.ru - - AzureAd:ClientId= - - AzureAd:ClientSecret= - - AzureAd:Domain=sfedu.onmicrosoft.com - - AzureAd:CallbackPath=/signin-oidc + + - AzureAd:Instance=${AzureAd_Instance:-https://login.microsoftonline.com/} + - AzureAd:TenantId=${AzureAd_TenantId:-sfedu.ru} + - AzureAd:ClientId=${AzureAd_ClientId} + - AzureAd:ClientSecret=${AzureAd_ClientSecret} + - AzureAd:Domain=${AzureAd_Domain:-sfedu.onmicrosoft.com} + - AzureAd:CallbackPath=${AzureAd_CallbackPath:-/signin-oidc} + + - Jwt:Secret=${JWT_SECRET} + - Jwt:Issuer=${JWT_ISSUER:-UniVerse} + - Jwt:Audience=${JWT_AUDIENCE:-UniVerse} + - Jwt:AccessTokenExpirationMinutes=${JWT_EXPIRE_DAYS:-30} + - Jwt:RefreshTokenExpirationDays=${JWT_EXPIRE_DAYS:-30} + + - Cors:Origins=${CORS_ALLOWED_ORIGINS:-http://localhost:3000} + + - Llm:BaseUrl=${LLM_BASE_URL} + - Llm:ApiKey=${LLM_API_KEY} + - Llm:Model=${LLM_MODEL} + + - ModeusApi:BaseUrl=${MODEUS_API_BASE_URL} + - ModeusApi:ApiKey=${MODEUS_API_KEY} + + - Gamification:XpThresholds=${GAMIFICATION_XP_THRESHOLDS:[0, 100, 300, 600, 1000, 1500, 2500, 4000]} + + - ConnectionStrings:DefaultConnection=Host=db;Port=5432;Database=${POSTGRES_DATABASE};Username=${POSTGRES_USER};Password=${POSTGRES_PASSWORD} db: image: postgres:18-alpine