web/compose.yaml

92 lines
1.9 KiB
YAML

x-common-config: &common-config
restart: always
build:
context: ./app
dockerfile: Dockerfile
volumes:
- ./.env:/app/.env
networks:
- deployml_network
services:
redis:
image: redis
restart: always
volumes:
- ./redis:/data
- ./redis.conf:/usr/local/etc/redis/redis.conf
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
networks:
- deployml_network
app:
<<: *common-config
depends_on:
- redis
worker:
<<: *common-config
command: poetry run celery -A data_helper worker --loglevel=info
deploy:
resources:
limits:
cpus: "0.8"
memory: ${MEMORY_LIMIT:-2GB}
depends_on:
- app
- redis
beat:
<<: *common-config
command: poetry run celery -A data_helper beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler
depends_on:
- app
- redis
environment:
- DB_NAME=${DB_NAME}
- DB_USER=${DB_USER}
- DB_PASSWORD=${DB_PASSWORD}
- DB_HOST=${DB_HOST}
- DB_PORT=${DB_PORT}
env_file:
- .env
volumes:
- ./celerybeat-schedule:/app/celerybeat-schedule
flower:
<<: *common-config
command: poetry run celery --broker=redis://redis:6379 -A data_helper flower --port=5555 --basic-auth=user:pswd
environment:
- FLOWER_PERSISTENT=True
volumes:
- ./flower.db:/app/flower.db
depends_on:
- app
- redis
- worker
front:
build:
context: ./front
dockerfile: Dockerfile
networks:
- deployml_network
depends_on:
- app
nginx:
image: nginx:latest
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- "${WEB_PORT:-80}:80"
- "${CELERY_PORT:-8080}:8080"
networks:
- deployml_network
depends_on:
- front
- flower
networks:
deployml_network:
driver: bridge