CONFIG: adaptar docker-compose.yml para Traefik y ControlMC
This commit is contained in:
+44
-28
@@ -1,53 +1,69 @@
|
|||||||
version: '3.8'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
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:
|
web:
|
||||||
build: .
|
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
|
command: gunicorn config.asgi:application -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 --workers 3
|
||||||
volumes:
|
restart: unless-stopped
|
||||||
- .:/app
|
|
||||||
ports:
|
|
||||||
- "8000:8000"
|
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
# Ya no conectamos a una DB local, lee el DATABASE_URL del .env
|
|
||||||
REDIS_URL: redis://redis:6379/0
|
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:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
restart: unless-stopped
|
mem_limit: 1g
|
||||||
mem_limit: 1g # Limita Gunicorn a 1GB
|
|
||||||
|
|
||||||
tax-api:
|
redis:
|
||||||
build: ./tax_api
|
image: redis:7-alpine
|
||||||
ports:
|
|
||||||
- "8001:8000"
|
|
||||||
restart: unless-stopped
|
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:
|
celery:
|
||||||
build: .
|
build: .
|
||||||
command: celery -A config worker -l info --concurrency=2
|
command: celery -A config worker -l info --concurrency=2
|
||||||
volumes:
|
restart: unless-stopped
|
||||||
- .:/app
|
|
||||||
env_file:
|
env_file:
|
||||||
- .env
|
- .env
|
||||||
environment:
|
environment:
|
||||||
REDIS_URL: redis://redis:6379/0
|
REDIS_URL: redis://redis:6379/0
|
||||||
|
networks:
|
||||||
|
- internal
|
||||||
depends_on:
|
depends_on:
|
||||||
- redis
|
- redis
|
||||||
restart: unless-stopped
|
mem_limit: 512m
|
||||||
mem_limit: 512m # Limita Celery a 512MB
|
|
||||||
|
|
||||||
volumes:
|
tax-api:
|
||||||
redis_data:
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user