Build changes
Build and Push Docker Images / build (push) Successful in 5s

This commit is contained in:
2026-05-11 13:02:10 +03:00
parent e512317f33
commit 3e1ea47007
3 changed files with 435 additions and 1 deletions
+7 -1
View File
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.Docker.Sdk">
<Project Sdk="Microsoft.Docker.Sdk">
<PropertyGroup Label="Globals">
<ProjectGuid>81dded9d-158b-e303-5f62-77a2896d2a5a</ProjectGuid>
</PropertyGroup>
@@ -20,5 +20,11 @@
<DependentUpon>.env</DependentUpon>
</None>
<None Include="docker-compose.yml" />
<None Include="docker-compose.staging.yml">
<DependentUpon>docker-compose.yml</DependentUpon>
</None>
<None Include="docker-compose.production.yml">
<DependentUpon>docker-compose.yml</DependentUpon>
</None>
</ItemGroup>
</Project>
@@ -0,0 +1,214 @@
version: "3.8"
services:
rag-api:
image: registry.easysoft.ro/apps/myai-rag-api:production
container_name: myai-rag-api
environment:
# ASP.NET
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- ASPNETCORE_URLS=${ASPNETCORE_URLS:-http://+:8080}
- APP_ENVIRONMENT_NAME=${APP_ENVIRONMENT_NAME:-myai.local}
- LogEnvironmentOnStartup=${LogEnvironmentOnStartup:-true}
# Database: matches rag-api appsettings Database section
- Database__Host=${Database__Host:-sqlserver}
- Database__Port=${Database__Port:-1433}
- Database__Name=${Database__Name:-MyAiDb}
- Database__User=${Database__User:-sa}
- Database__Password=${Database__Password:-}
- Database__TrustServerCertificate=${Database__TrustServerCertificate:-true}
# InternalApi: matches rag-api appsettings InternalApi section
- InternalApi__ApiKey=${InternalApi__ApiKey:-change-this-internal-key}
- InternalApi__RequireApiKey=${InternalApi__RequireApiKey:-false}
# Rag: matches rag-api appsettings Rag section
- Rag__MaxFileSizeMb=${Rag__MaxFileSizeMb:-8}
- Rag__ChunkSize=${Rag__ChunkSize:-900}
- Rag__ChunkOverlap=${Rag__ChunkOverlap:-150}
- Rag__MaxTextChars=${Rag__MaxTextChars:-60000}
- Rag__DefaultTopK=${Rag__DefaultTopK:-20}
- Rag__MaxTopK=${Rag__MaxTopK:-50}
- Rag__ClassifyWithAi=${Rag__ClassifyWithAi:-false}
# Ai: matches rag-api appsettings Ai section
- Ai__Provider=${Ai__Provider:-OpenAI}
- Ai__OpenAI__ApiKey=${Ai__OpenAI__ApiKey:-}
- Ai__OpenAI__ChatModel=${Ai__OpenAI__ChatModel:-gpt-4o-mini}
- Ai__OpenAI__EmbeddingModel=${Ai__OpenAI__EmbeddingModel:-text-embedding-3-small}
- Ai__OpenAI__TimeoutSeconds=${Ai__OpenAI__TimeoutSeconds:-90}
- Ai__Ollama__BaseUrl=${Ai__Ollama__BaseUrl:-http://host.docker.internal:11434}
- Ai__Ollama__ChatModel=${Ai__Ollama__ChatModel:-llama3.1:8b}
- Ai__Ollama__EmbeddingModel=${Ai__Ollama__EmbeddingModel:-nomic-embed-text}
- Ai__Ollama__TimeoutSeconds=${Ai__Ollama__TimeoutSeconds:-180}
# Logging / Serilog
- Logging__LogLevel__Default=${Logging__LogLevel__Default:-Information}
- Logging__LogLevel__Microsoft=${Logging__LogLevel__Microsoft:-Warning}
- Logging__LogLevel__Microsoft__AspNetCore=${Logging__LogLevel__Microsoft__AspNetCore:-Warning}
- Logging__LogLevel__Api=${Logging__LogLevel__Api:-Information}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
networks:
- myai-network
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"
cv-matcher-api:
image: registry.easysoft.ro/apps/myai-cv-matcher-api:production
container_name: myai-cv-matcher-api
depends_on:
- rag-api
environment:
# ASP.NET
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- ASPNETCORE_URLS=${ASPNETCORE_URLS:-http://+:8080}
- APP_ENVIRONMENT_NAME=${APP_ENVIRONMENT_NAME:-myai.local}
- LogEnvironmentOnStartup=${LogEnvironmentOnStartup:-true}
# Database: matches cv-matcher-api appsettings Database section
- Database__Host=${Database__Host:-sqlserver}
- Database__Port=${Database__Port:-1433}
- Database__Name=${Database__Name:-MyAiDb}
- Database__User=${Database__User:-sa}
- Database__Password=${Database__Password:-}
- Database__TrustServerCertificate=${Database__TrustServerCertificate:-true}
# InternalApi: matches cv-matcher-api appsettings InternalApi section
- InternalApi__ApiKey=${InternalApi__ApiKey:-change-this-internal-key}
- InternalApi__RequireApiKey=${InternalApi__RequireApiKey:-false}
# RagApi: matches cv-matcher-api appsettings RagApi section
# IMPORTANT: this must use the container-internal port, not the host-mapped port.
- RagApi__BaseUrl=${RagApi__BaseUrl:-http://rag-api:8080}
- RagApi__InternalApiKey=${RagApi__InternalApiKey:-${InternalApi__ApiKey:-change-this-internal-key}}
# Ai: matches cv-matcher-api appsettings Ai section
- Ai__Provider=${Ai__Provider:-OpenAI}
- Ai__OpenAI__ApiKey=${Ai__OpenAI__ApiKey:-}
- Ai__OpenAI__ChatModel=${Ai__OpenAI__ChatModel:-gpt-4o-mini}
- Ai__OpenAI__TimeoutSeconds=${Ai__OpenAI__TimeoutSeconds:-90}
- Ai__Ollama__BaseUrl=${Ai__Ollama__BaseUrl:-http://host.docker.internal:11434}
- Ai__Ollama__ChatModel=${Ai__Ollama__ChatModel:-llama3.1:8b}
- Ai__Ollama__TimeoutSeconds=${Ai__Ollama__TimeoutSeconds:-180}
# Matcher: matches cv-matcher-api appsettings Matcher section
- Matcher__TopK=${Matcher__TopK:-10}
- Matcher__DeepScoreTopN=${Matcher__DeepScoreTopN:-5}
- Matcher__MaxJobTextChars=${Matcher__MaxJobTextChars:-60000}
# Logging / Serilog
- Logging__LogLevel__Default=${Logging__LogLevel__Default:-Information}
- Logging__LogLevel__Microsoft=${Logging__LogLevel__Microsoft:-Warning}
- Logging__LogLevel__Microsoft__AspNetCore=${Logging__LogLevel__Microsoft__AspNetCore:-Warning}
- Logging__LogLevel__Api=${Logging__LogLevel__Api:-Information}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
networks:
- myai-network
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"
api:
image: registry.easysoft.ro/apps/myai-api:production
container_name: myai-api
depends_on:
- cv-matcher-api
environment:
# ASP.NET
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- ASPNETCORE_URLS=${ASPNETCORE_URLS:-http://+:8080}
- APP_ENVIRONMENT_NAME=${APP_ENVIRONMENT_NAME:-myai.local}
- LogEnvironmentOnStartup=${LogEnvironmentOnStartup:-true}
# Google: matches api appsettings Google section
- Google__TagManagerId=${Google__TagManagerId:-}
- Google__MapKey=${Google__MapKey:-}
# Contact / Subscribe: matches api appsettings Contact and Subscribe sections
- Contact__ToEmail=${Contact__ToEmail:-}
- Contact__FromEmail=${Contact__FromEmail:-${Smtp__Username:-}}
- Contact__SubjectPrefix=${Contact__SubjectPrefix:-}
- Subscribe__ToEmail=${Subscribe__ToEmail:-}
- Subscribe__SubjectPrefix=${Subscribe__SubjectPrefix:-}
# SMTP: matches api appsettings Smtp section
- Smtp__Host=${Smtp__Host:-mail.example.com}
- Smtp__Port=${Smtp__Port:-587}
- Smtp__Username=${Smtp__Username:-}
- Smtp__Password=${Smtp__Password:-}
- Smtp__UseStartTls=${Smtp__UseStartTls:-false}
# Captcha: matches api appsettings Captcha section
- Captcha__Provider=${Captcha__Provider:-Recaptcha}
- Captcha__SecretKey=${Captcha__SecretKey:-}
- Captcha__PublicKey=${Captcha__PublicKey:-}
- Captcha__MinimumScore=${Captcha__MinimumScore:-0.5}
# FileStorage: matches api appsettings FileStorage section
- FileStorage__Path=${FileStorage__Path:-Files}
- FileStorage__DefaultFileName=${FileStorage__DefaultFileName:-}
- FileStorage__ToEmail=${FileStorage__ToEmail:-}
- FileStorage__FromEmail=${FileStorage__FromEmail:-${Smtp__Username:-}}
- FileStorage__SubjectPrefix=${FileStorage__SubjectPrefix:-[File Download]}
# CvMatcherApi: matches api appsettings CvMatcherApi section
- CvMatcherApi__BaseUrl=${CvMatcherApi__BaseUrl:-http://cv-matcher-api:8080}
- CvMatcherApi__InternalApiKey=${CvMatcherApi__InternalApiKey:-${InternalApi__ApiKey:-change-this-internal-key}}
# CORS: not in the uploaded api appsettings, but used by your API startup config.
- Cors__AllowedOrigins__0=${Cors__AllowedOrigins__0:-http://localhost:5000}
- Cors__AllowedOrigins__1=${Cors__AllowedOrigins__1:-http://web:8080}
# Logging / Serilog
- Logging__LogLevel__Default=${Logging__LogLevel__Default:-Information}
- Logging__LogLevel__Microsoft=${Logging__LogLevel__Microsoft:-Warning}
- Logging__LogLevel__Microsoft__AspNetCore=${Logging__LogLevel__Microsoft__AspNetCore:-Warning}
- Logging__LogLevel__Api=${Logging__LogLevel__Api:-Information}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
volumes:
- ../api/logs:/app/logs
- ${FileStorage__Path:-../Files}:/app/Files
networks:
- myai-network
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"
web:
image: registry.easysoft.ro/apps/myai-web:production
container_name: myai-web
depends_on:
- api
ports:
- "5000:8080"
environment:
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- ASPNETCORE_URLS=${ASPNETCORE_URLS:-http://+:8080}
- APP_ENVIRONMENT_NAME=${APP_ENVIRONMENT_NAME:-myai.local}
networks:
- myai-network
restart: unless-stopped
networks:
myai-network:
driver: bridge
+214
View File
@@ -0,0 +1,214 @@
version: "3.8"
services:
rag-api:
image: registry.easysoft.ro/apps/myai-rag-api:staging
container_name: myai-rag-api
environment:
# ASP.NET
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- ASPNETCORE_URLS=${ASPNETCORE_URLS:-http://+:8080}
- APP_ENVIRONMENT_NAME=${APP_ENVIRONMENT_NAME:-myai.local}
- LogEnvironmentOnStartup=${LogEnvironmentOnStartup:-true}
# Database: matches rag-api appsettings Database section
- Database__Host=${Database__Host:-sqlserver}
- Database__Port=${Database__Port:-1433}
- Database__Name=${Database__Name:-MyAiDb}
- Database__User=${Database__User:-sa}
- Database__Password=${Database__Password:-}
- Database__TrustServerCertificate=${Database__TrustServerCertificate:-true}
# InternalApi: matches rag-api appsettings InternalApi section
- InternalApi__ApiKey=${InternalApi__ApiKey:-change-this-internal-key}
- InternalApi__RequireApiKey=${InternalApi__RequireApiKey:-false}
# Rag: matches rag-api appsettings Rag section
- Rag__MaxFileSizeMb=${Rag__MaxFileSizeMb:-8}
- Rag__ChunkSize=${Rag__ChunkSize:-900}
- Rag__ChunkOverlap=${Rag__ChunkOverlap:-150}
- Rag__MaxTextChars=${Rag__MaxTextChars:-60000}
- Rag__DefaultTopK=${Rag__DefaultTopK:-20}
- Rag__MaxTopK=${Rag__MaxTopK:-50}
- Rag__ClassifyWithAi=${Rag__ClassifyWithAi:-false}
# Ai: matches rag-api appsettings Ai section
- Ai__Provider=${Ai__Provider:-OpenAI}
- Ai__OpenAI__ApiKey=${Ai__OpenAI__ApiKey:-}
- Ai__OpenAI__ChatModel=${Ai__OpenAI__ChatModel:-gpt-4o-mini}
- Ai__OpenAI__EmbeddingModel=${Ai__OpenAI__EmbeddingModel:-text-embedding-3-small}
- Ai__OpenAI__TimeoutSeconds=${Ai__OpenAI__TimeoutSeconds:-90}
- Ai__Ollama__BaseUrl=${Ai__Ollama__BaseUrl:-http://host.docker.internal:11434}
- Ai__Ollama__ChatModel=${Ai__Ollama__ChatModel:-llama3.1:8b}
- Ai__Ollama__EmbeddingModel=${Ai__Ollama__EmbeddingModel:-nomic-embed-text}
- Ai__Ollama__TimeoutSeconds=${Ai__Ollama__TimeoutSeconds:-180}
# Logging / Serilog
- Logging__LogLevel__Default=${Logging__LogLevel__Default:-Information}
- Logging__LogLevel__Microsoft=${Logging__LogLevel__Microsoft:-Warning}
- Logging__LogLevel__Microsoft__AspNetCore=${Logging__LogLevel__Microsoft__AspNetCore:-Warning}
- Logging__LogLevel__Api=${Logging__LogLevel__Api:-Information}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
networks:
- myai-network
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"
cv-matcher-api:
image: registry.easysoft.ro/apps/myai-cv-matcher-api:staging
container_name: myai-cv-matcher-api
depends_on:
- rag-api
environment:
# ASP.NET
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- ASPNETCORE_URLS=${ASPNETCORE_URLS:-http://+:8080}
- APP_ENVIRONMENT_NAME=${APP_ENVIRONMENT_NAME:-myai.local}
- LogEnvironmentOnStartup=${LogEnvironmentOnStartup:-true}
# Database: matches cv-matcher-api appsettings Database section
- Database__Host=${Database__Host:-sqlserver}
- Database__Port=${Database__Port:-1433}
- Database__Name=${Database__Name:-MyAiDb}
- Database__User=${Database__User:-sa}
- Database__Password=${Database__Password:-}
- Database__TrustServerCertificate=${Database__TrustServerCertificate:-true}
# InternalApi: matches cv-matcher-api appsettings InternalApi section
- InternalApi__ApiKey=${InternalApi__ApiKey:-change-this-internal-key}
- InternalApi__RequireApiKey=${InternalApi__RequireApiKey:-false}
# RagApi: matches cv-matcher-api appsettings RagApi section
# IMPORTANT: this must use the container-internal port, not the host-mapped port.
- RagApi__BaseUrl=${RagApi__BaseUrl:-http://rag-api:8080}
- RagApi__InternalApiKey=${RagApi__InternalApiKey:-${InternalApi__ApiKey:-change-this-internal-key}}
# Ai: matches cv-matcher-api appsettings Ai section
- Ai__Provider=${Ai__Provider:-OpenAI}
- Ai__OpenAI__ApiKey=${Ai__OpenAI__ApiKey:-}
- Ai__OpenAI__ChatModel=${Ai__OpenAI__ChatModel:-gpt-4o-mini}
- Ai__OpenAI__TimeoutSeconds=${Ai__OpenAI__TimeoutSeconds:-90}
- Ai__Ollama__BaseUrl=${Ai__Ollama__BaseUrl:-http://host.docker.internal:11434}
- Ai__Ollama__ChatModel=${Ai__Ollama__ChatModel:-llama3.1:8b}
- Ai__Ollama__TimeoutSeconds=${Ai__Ollama__TimeoutSeconds:-180}
# Matcher: matches cv-matcher-api appsettings Matcher section
- Matcher__TopK=${Matcher__TopK:-10}
- Matcher__DeepScoreTopN=${Matcher__DeepScoreTopN:-5}
- Matcher__MaxJobTextChars=${Matcher__MaxJobTextChars:-60000}
# Logging / Serilog
- Logging__LogLevel__Default=${Logging__LogLevel__Default:-Information}
- Logging__LogLevel__Microsoft=${Logging__LogLevel__Microsoft:-Warning}
- Logging__LogLevel__Microsoft__AspNetCore=${Logging__LogLevel__Microsoft__AspNetCore:-Warning}
- Logging__LogLevel__Api=${Logging__LogLevel__Api:-Information}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
networks:
- myai-network
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"
api:
image: registry.easysoft.ro/apps/myai-api:staging
container_name: myai-api
depends_on:
- cv-matcher-api
environment:
# ASP.NET
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- ASPNETCORE_URLS=${ASPNETCORE_URLS:-http://+:8080}
- APP_ENVIRONMENT_NAME=${APP_ENVIRONMENT_NAME:-myai.local}
- LogEnvironmentOnStartup=${LogEnvironmentOnStartup:-true}
# Google: matches api appsettings Google section
- Google__TagManagerId=${Google__TagManagerId:-}
- Google__MapKey=${Google__MapKey:-}
# Contact / Subscribe: matches api appsettings Contact and Subscribe sections
- Contact__ToEmail=${Contact__ToEmail:-}
- Contact__FromEmail=${Contact__FromEmail:-${Smtp__Username:-}}
- Contact__SubjectPrefix=${Contact__SubjectPrefix:-}
- Subscribe__ToEmail=${Subscribe__ToEmail:-}
- Subscribe__SubjectPrefix=${Subscribe__SubjectPrefix:-}
# SMTP: matches api appsettings Smtp section
- Smtp__Host=${Smtp__Host:-mail.example.com}
- Smtp__Port=${Smtp__Port:-587}
- Smtp__Username=${Smtp__Username:-}
- Smtp__Password=${Smtp__Password:-}
- Smtp__UseStartTls=${Smtp__UseStartTls:-false}
# Captcha: matches api appsettings Captcha section
- Captcha__Provider=${Captcha__Provider:-Recaptcha}
- Captcha__SecretKey=${Captcha__SecretKey:-}
- Captcha__PublicKey=${Captcha__PublicKey:-}
- Captcha__MinimumScore=${Captcha__MinimumScore:-0.5}
# FileStorage: matches api appsettings FileStorage section
- FileStorage__Path=${FileStorage__Path:-Files}
- FileStorage__DefaultFileName=${FileStorage__DefaultFileName:-}
- FileStorage__ToEmail=${FileStorage__ToEmail:-}
- FileStorage__FromEmail=${FileStorage__FromEmail:-${Smtp__Username:-}}
- FileStorage__SubjectPrefix=${FileStorage__SubjectPrefix:-[File Download]}
# CvMatcherApi: matches api appsettings CvMatcherApi section
- CvMatcherApi__BaseUrl=${CvMatcherApi__BaseUrl:-http://cv-matcher-api:8080}
- CvMatcherApi__InternalApiKey=${CvMatcherApi__InternalApiKey:-${InternalApi__ApiKey:-change-this-internal-key}}
# CORS: not in the uploaded api appsettings, but used by your API startup config.
- Cors__AllowedOrigins__0=${Cors__AllowedOrigins__0:-http://localhost:5000}
- Cors__AllowedOrigins__1=${Cors__AllowedOrigins__1:-http://web:8080}
# Logging / Serilog
- Logging__LogLevel__Default=${Logging__LogLevel__Default:-Information}
- Logging__LogLevel__Microsoft=${Logging__LogLevel__Microsoft:-Warning}
- Logging__LogLevel__Microsoft__AspNetCore=${Logging__LogLevel__Microsoft__AspNetCore:-Warning}
- Logging__LogLevel__Api=${Logging__LogLevel__Api:-Information}
- Serilog__WriteTo__2__Args__fromEmail=${Serilog__WriteTo__2__Args__fromEmail:-}
- Serilog__WriteTo__2__Args__toEmail=${Serilog__WriteTo__2__Args__toEmail:-}
- Serilog__WriteTo__2__Args__mailServer=${Serilog__WriteTo__2__Args__mailServer:-}
- Serilog__WriteTo__2__Args__networkCredential__userName=${Serilog__WriteTo__2__Args__networkCredential__userName:-}
- Serilog__WriteTo__2__Args__networkCredential__password=${Serilog__WriteTo__2__Args__networkCredential__password:-}
- Serilog__WriteTo__2__Args__port=${Serilog__WriteTo__2__Args__port:-587}
- Serilog__WriteTo__2__Args__enableSsl=${Serilog__WriteTo__2__Args__enableSsl:-true}
volumes:
- ../api/logs:/app/logs
- ${FileStorage__Path:-../Files}:/app/Files
networks:
- myai-network
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"
web:
image: registry.easysoft.ro/apps/myai-web:staging
container_name: myai-web
depends_on:
- api
ports:
- "5000:8080"
environment:
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- ASPNETCORE_URLS=${ASPNETCORE_URLS:-http://+:8080}
- APP_ENVIRONMENT_NAME=${APP_ENVIRONMENT_NAME:-myai.local}
networks:
- myai-network
restart: unless-stopped
networks:
myai-network:
driver: bridge