2026-01-08 04:00:41 +00:00
# Docker Compose - Student Enrollment System
# Optimizado para bajo consumo de RAM
# Usa archivo .env en la raíz del proyecto para configuración
services :
db :
2026-01-09 12:44:43 +00:00
image : andresgarcia0313/mssql-express-lowram:latest
2026-01-08 04:00:41 +00:00
container_name : student-db
env_file :
- ../../.env
environment :
2026-01-09 12:44:43 +00:00
- MSSQL_SA_PASSWORD=${DB_PASSWORD:-Asde71.4Asde71.4}
2026-01-08 04:00:41 +00:00
- MSSQL_PID=Express
2026-01-09 12:44:43 +00:00
- MSSQL_MEMORY_LIMIT_MB=340
2026-01-08 04:00:41 +00:00
ports :
- "${DB_PORT:-1433}:1433"
volumes :
2026-01-09 12:44:43 +00:00
- sqlserver-data:/var/opt/mssql/data:delegated
mem_limit : 384m
memswap_limit : 4g
mem_reservation : 256m
2026-01-08 04:00:41 +00:00
healthcheck :
2026-01-09 12:44:43 +00:00
test : /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$${MSSQL_SA_PASSWORD}" -Q "SELECT 1" || exit 1
interval : 30s
timeout : 10s
retries : 5
2026-01-08 04:00:41 +00:00
start_period : 30s
networks :
- student-network
restart : unless-stopped
api :
build :
context : ../..
dockerfile : deploy/docker/Dockerfile.api
args :
- DOTNET_CLI_TELEMETRY_OPTOUT=1
container_name : student-api
env_file :
- ../../.env
environment :
- DB_HOST=db
- DB_PORT=1433
- ConnectionStrings__DefaultConnection=Server=db;Database=${DB_NAME:-StudentEnrollment};User Id=${DB_USER:-sa};Password=${DB_PASSWORD};TrustServerCertificate=True;Max Pool Size=50;Min Pool Size=2
- ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT:-Development}
- CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:8080,http://localhost:4200}
- DOTNET_gcServer=0
- DOTNET_GCHeapCount=2
- DOTNET_gcConcurrent=1
ports :
- "${API_PORT:-5000}:5000"
deploy :
resources :
limits :
cpus : "2"
memory : 512M
reservations :
cpus : "0.5"
memory : 256M
depends_on :
db :
condition : service_healthy
healthcheck :
test : [ "CMD" , "curl" , "-f" , "http://localhost:5000/health" ]
interval : 15s
timeout : 5s
retries : 5
start_period : 30s
networks :
- student-network
restart : unless-stopped
frontend :
build :
context : ../..
dockerfile : deploy/docker/Dockerfile.frontend
container_name : student-frontend
ports :
- "${FRONTEND_PORT:-8080}:80"
deploy :
resources :
limits :
cpus : "1"
memory : 128M
reservations :
cpus : "0.25"
memory : 64M
depends_on :
api :
condition : service_healthy
networks :
- student-network
restart : unless-stopped
volumes :
sqlserver-data :
driver : local
networks :
student-network :
driver : bridge