CONFIG: adaptar docker-compose.yml para Traefik y ControlMC

This commit is contained in:
Nachou-u
2026-09-09 08:36:28 -03:00
parent d1c4855962
commit 7684136e46
+44 -28
View File
@@ -1,53 +1,69 @@
version: '3.8'
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
restart: unless-stopped
mem_limit: 512m # Limita Redis a 512MB de memoria RAM
web:
build: .
# Se sobrescribe el comando para asegurarnos que usa Gunicorn (así esté en el Dockerfile)
command: gunicorn config.asgi:application -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 --workers 3
volumes:
- .:/app
ports:
- "8000:8000"
restart: unless-stopped
env_file:
- .env
environment:
# Ya no conectamos a una DB local, lee el DATABASE_URL del .env
REDIS_URL: redis://redis:6379/0
# Django necesita escuchar en 0.0.0.0 (ya lo hace gunicorn)
volumes:
- ${PROJECT_SPACE:-.}/media:/app/media
- ${PROJECT_SPACE:-.}/static:/app/static
networks:
- controlmc_proxy
- internal
labels:
- "controlmc.public=true"
- "traefik.enable=true"
- "traefik.docker.network=controlmc_proxy"
- "traefik.http.routers.${ROUTER_NAME}.rule=Host(`${APP_DOMAIN}`)"
- "traefik.http.routers.${ROUTER_NAME}.entrypoints=websecure"
- "traefik.http.routers.${ROUTER_NAME}.tls=true"
- "traefik.http.routers.${ROUTER_NAME}.tls.certresolver=le"
- "traefik.http.services.${ROUTER_NAME}.loadbalancer.server.port=8000"
depends_on:
- redis
restart: unless-stopped
mem_limit: 1g # Limita Gunicorn a 1GB
mem_limit: 1g
tax-api:
build: ./tax_api
ports:
- "8001:8000"
redis:
image: redis:7-alpine
restart: unless-stopped
mem_limit: 256m
volumes:
- ${PROJECT_SPACE:-.}/redis_data:/data
networks:
- internal
mem_limit: 512m
# Redis no necesita puertos públicos ni etiquetas Traefik
celery:
build: .
command: celery -A config worker -l info --concurrency=2
volumes:
- .:/app
restart: unless-stopped
env_file:
- .env
environment:
REDIS_URL: redis://redis:6379/0
networks:
- internal
depends_on:
- redis
restart: unless-stopped
mem_limit: 512m # Limita Celery a 512MB
mem_limit: 512m
volumes:
redis_data:
tax-api:
build: ./tax_api
restart: unless-stopped
networks:
- internal
mem_limit: 256m
# Si la API de impuestos necesita ser expuesta al público por Traefik,
# se deben agregar etiquetas similares a las del servicio 'web' con un ROUTER_NAME diferente.
networks:
controlmc_proxy:
external: true
internal:
# Red interna para que web, redis, celery y tax-api se comuniquen sin exponerse