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" env_file: - .env environment: # Ya no conectamos a una DB local, lee el DATABASE_URL del .env REDIS_URL: redis://redis:6379/0 depends_on: - redis restart: unless-stopped mem_limit: 1g # Limita Gunicorn a 1GB tax-api: build: ./tax_api ports: - "8001:8000" restart: unless-stopped mem_limit: 256m celery: build: . command: celery -A config worker -l info --concurrency=2 volumes: - .:/app env_file: - .env environment: REDIS_URL: redis://redis:6379/0 depends_on: - redis restart: unless-stopped mem_limit: 512m # Limita Celery a 512MB volumes: redis_data: