academia/deploy/docker/docker-compose.yml

103 lines
2.6 KiB
YAML
Raw Permalink Normal View History

# 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:
image: andresgarcia0313/mssql-express-lowram:latest
container_name: student-db
env_file:
- ../../.env
environment:
- MSSQL_SA_PASSWORD=${DB_PASSWORD:-Asde71.4Asde71.4}
- MSSQL_PID=Express
- MSSQL_MEMORY_LIMIT_MB=340
ports:
- "${DB_PORT:-1433}:1433"
volumes:
- sqlserver-data:/var/opt/mssql/data:delegated
mem_limit: 384m
memswap_limit: 4g
mem_reservation: 256m
healthcheck:
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
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}
- App__BaseUrl=${APP_BASE_URL:-http://localhost:8080}
- 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