92 lines
1.9 KiB
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 |