version: '3.8' services: web: build: context: . dockerfile: Dockerfile command: gunicorn config.asgi:application -k uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 --workers 3 restart: unless-stopped environment: REDIS_URL: redis://redis:6379/0 CSRF_TRUSTED_ORIGINS: https://${APP_DOMAIN} volumes: - erp_media:/app/media - erp_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 mem_limit: 1g redis: image: redis:7-alpine restart: unless-stopped volumes: - erp_redis_data:/data networks: - internal mem_limit: 512m celery: build: context: . dockerfile: Dockerfile command: celery -A config worker -l info --concurrency=2 restart: unless-stopped environment: REDIS_URL: redis://redis:6379/0 networks: - internal depends_on: - redis mem_limit: 512m tax-api: build: context: ./tax_api dockerfile: Dockerfile restart: unless-stopped networks: - controlmc_proxy - internal mem_limit: 256m networks: controlmc_proxy: external: true internal: null volumes: erp_media: null erp_static: null erp_redis_data: null