erp-construccion/docker-compose.prod.yml

130 lines
3.6 KiB
YAML

version: '3.8'
# =============================================================================
# ERP-SUITE: CONSTRUCCION - Production Docker Compose
# =============================================================================
# Vertical: Construccion (35% completado)
# Puerto Frontend: 3020 | Puerto Backend: 3021
# Schemas BD: construccion (7 sub-schemas, 110 tablas)
# Depende de: auth.*, core.*, inventory.* (erp-core)
# =============================================================================
services:
# ===========================================================================
# BACKEND API
# ===========================================================================
backend:
image: ${DOCKER_REGISTRY:-72.60.226.4:5000}/erp-construccion-backend:${VERSION:-latest}
container_name: erp-construccion-backend
restart: unless-stopped
ports:
- "3021:3021"
environment:
- NODE_ENV=production
- PORT=3021
env_file:
- ./backend/.env.production
volumes:
- construccion-logs:/var/log/construccion
- construccion-uploads:/app/uploads
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3021/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- erp-network
- isem-network
depends_on:
- redis
deploy:
resources:
limits:
cpus: '1'
memory: 512M
reservations:
cpus: '0.25'
memory: 256M
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
# ===========================================================================
# FRONTEND WEB
# ===========================================================================
frontend:
image: ${DOCKER_REGISTRY:-72.60.226.4:5000}/erp-construccion-frontend:${VERSION:-latest}
container_name: erp-construccion-frontend
restart: unless-stopped
ports:
- "3020:80"
depends_on:
backend:
condition: service_healthy
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:80"]
interval: 30s
timeout: 10s
retries: 3
networks:
- erp-network
deploy:
resources:
limits:
cpus: '0.5'
memory: 128M
logging:
driver: "json-file"
options:
max-size: "5m"
max-file: "2"
# ===========================================================================
# REDIS (Cache + Sessions + Queue)
# ===========================================================================
redis:
image: redis:7-alpine
container_name: erp-construccion-redis
restart: unless-stopped
ports:
- "6380:6379"
command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru
volumes:
- construccion-redis:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 3
networks:
- erp-network
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
# =============================================================================
# VOLUMES
# =============================================================================
volumes:
construccion-logs:
driver: local
construccion-uploads:
driver: local
construccion-redis:
driver: local
# =============================================================================
# NETWORKS
# =============================================================================
networks:
erp-network:
driver: bridge
isem-network:
external: true
name: isem-network