services: api: image: registry.easysoft.ro/apps/myai-api:production container_name: myai-api environment: - APP_ENVIRONMENT_NAME=easySoft.ro-Production - ASPNETCORE_ENVIRONMENT=Production - ASPNETCORE_URLS=http://+:8080 - Smtp__Host=mail.easysoft.ro - Smtp__Port=587 - Smtp__Username=no-reply@myai.ro - Smtp__Password=${Smtp__Password} - Smtp__UseStartTls=true - FileStorage__Path=Files - FileStorage__DefaultFileName= - FileStorage__ToEmail=webmaster@myai.ro - FileStorage__SubjectPrefix=[File Download] - Captcha__Provider=Recaptcha - Captcha__SecretKey=${Captcha__SecretKey} - Captcha__PublicKey=6LfR3NUsAAAAAH1bFYTKlgwp9SBKf5IRB2IOrhBe - Captcha__MinimumScore=0.5 - Google__TagManagerId=GTM-NHWC9N2K - Google__MapKey= - Contact__ToEmail=contact@myai.ro - Contact__SubjectPrefix=[Contact] - Subscribe__ToEmail=contact@myai.ro - Subscribe__SubjectPrefix=[Subscribe] - Cors__AllowedOrigins__0=https://myai.ro - Logging__LogLevel__Default=Information - Logging__LogLevel__Microsoft=Warning - Logging__LogLevel__Microsoft__AspNetCore=Warning - Logging__LogLevel__Api=Information - Serilog__WriteTo__2__Args__fromEmail=no-reply@myai.ro - Serilog__WriteTo__2__Args__toEmail=webmaster@myai.ro - Serilog__WriteTo__2__Args__mailServer=mail.easysoft.ro - Serilog__WriteTo__2__Args__networkCredential__userName=no-reply@myai.ro - Serilog__WriteTo__2__Args__networkCredential__password=${Smtp__Password} - Serilog__WriteTo__2__Args__port=587 - Serilog__WriteTo__2__Args__enableSsl=true - Ai__OpenAI__ApiKey=${Ai__OpenAI__ApiKey} - Ai__OpenAI__ChatModel=${Ai__OpenAI__ChatModel} - Ai__OpenAI__EmbeddingModel=${Ai__OpenAI__EmbeddingModel} - Ai__OpenAI__TimeoutSeconds=${Ai__OpenAI__TimeoutSeconds} # Database (shared) - Database__Host=${Database__Host} - Database__Port=${Database__Port} - Database__Name=${Database__Name} - Database__User=${Database__User} - Database__Password=${Database__Password} - Database__TrustServerCertificate=${Database__TrustServerCertificate} # Internal API protection - InternalApi__ApiKey=${InternalApi__ApiKey} - InternalApi__RequireApiKey=${InternalApi__RequireApiKey} # CvMatcher API settings used by this service - CvMatcherApi__BaseUrl=${CvMatcherApi__BaseUrl} - CvMatcherApi__InternalApiKey=${CvMatcherApi__InternalApiKey} # RAG settings - Rag__MaxFileSizeMb=${Rag__MaxFileSizeMb} - Rag__ChunkSize=${Rag__ChunkSize} - Rag__ChunkOverlap=${Rag__ChunkOverlap} - Rag__MaxTextChars=${Rag__MaxTextChars} - Rag__DefaultTopK=${Rag__DefaultTopK} - Rag__MaxTopK=${Rag__MaxTopK} - Rag__ClassifyWithAi=${Rag__ClassifyWithAi} volumes: - myai_api_logs:/app/logs - /opt/easysoft/files:/app/Files networks: - myai-network extra_hosts: - "mail.easysoft.ro:10.0.0.225" 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: - "5140:8080" networks: - myai-network restart: unless-stopped labels: - "com.centurylinklabs.watchtower.enable=true" networks: myai-network: driver: bridge volumes: myai_api_logs: