Fixes: Extra: 1) Correct build key order in docker-compose.yml for app, worker, beat, and flower services;
144 lines
3.5 KiB
YAML
144 lines
3.5 KiB
YAML
x-logging:
|
|
&default-logging
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "3"
|
|
|
|
services:
|
|
app:
|
|
container_name: app
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.app
|
|
restart: always
|
|
command: >
|
|
sh -c "poetry run python manage.py await_services &&
|
|
if [ \"$DEBUG\" = \"1\" ]; then
|
|
poetry run gunicorn evibes.wsgi:application --bind 0.0.0.0:8000 --workers 2 --reload --log-level debug --access-logfile - --error-logfile -;
|
|
else
|
|
poetry run gunicorn evibes.wsgi:application --bind 0.0.0.0:8000 --workers 12 --timeout 120;
|
|
fi"
|
|
volumes:
|
|
- .:/app
|
|
ports:
|
|
- "8000:8000"
|
|
env_file:
|
|
- .env
|
|
depends_on:
|
|
- database
|
|
- redis
|
|
- elasticsearch
|
|
logging: *default-logging
|
|
|
|
database:
|
|
container_name: database
|
|
image: postgis/postgis:17-3.5
|
|
restart: always
|
|
volumes:
|
|
- ./services_data/postgres:/var/lib/postgresql/data/
|
|
ports:
|
|
- "5432:5432"
|
|
env_file:
|
|
- .env
|
|
logging: *default-logging
|
|
|
|
worker:
|
|
container_name: worker
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.app
|
|
restart: always
|
|
command: >
|
|
sh -c "poetry run celery -A evibes worker --loglevel=info --concurrency=4 --autoscale=4,2 --max-tasks-per-child=100 --max-memory-per-child=512000 --soft-time-limit=10800 --time-limit=21600"
|
|
volumes:
|
|
- .:/app
|
|
env_file:
|
|
- .env
|
|
depends_on:
|
|
- app
|
|
- redis
|
|
- elasticsearch
|
|
logging: *default-logging
|
|
healthcheck:
|
|
test: [ "CMD", "celery", "-A", "evibes", "status" ]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
mem_limit: 2g
|
|
|
|
beat:
|
|
container_name: beat
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.app
|
|
restart: always
|
|
command: sh -c "poetry run celery -A evibes beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler"
|
|
volumes:
|
|
- .:/app
|
|
env_file:
|
|
- .env
|
|
depends_on:
|
|
- worker
|
|
logging: *default-logging
|
|
|
|
redis:
|
|
container_name: redis
|
|
image: redis:7.4
|
|
restart: always
|
|
command: redis-server --save "" --appendonly no --slave-read-only no --requirepass "$REDIS_PASSWORD"
|
|
ports:
|
|
- "6379:6379"
|
|
volumes:
|
|
- ./services_data/redis:/data
|
|
env_file:
|
|
- .env
|
|
logging: *default-logging
|
|
|
|
elasticsearch:
|
|
container_name: elasticsearch
|
|
image: wiseless/elasticsearch-maxed:8.16.6
|
|
restart: always
|
|
environment:
|
|
- discovery.type=single-node
|
|
- ES_JAVA_OPTS=-Xms512m -Xmx512m
|
|
- xpack.security.enabled=false
|
|
env_file:
|
|
- .env
|
|
ports:
|
|
- "9200:9200"
|
|
volumes:
|
|
- es-data:/usr/share/elasticsearch/data
|
|
logging: *default-logging
|
|
|
|
flower:
|
|
container_name: flower
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.app
|
|
restart: always
|
|
command: sh -c "poetry run celery -A evibes --broker=$CELERY_BROKER_URL flower --address=0.0.0.0 --port=5555 --basic_auth=$FLOWER_USER:$FLOWER_PASSWORD"
|
|
depends_on:
|
|
- worker
|
|
ports:
|
|
- "5555:5555"
|
|
env_file:
|
|
- .env
|
|
logging: *default-logging
|
|
|
|
# nginx: # TODO complete the service after storefront is present
|
|
# container_name: nginx
|
|
# image: nginx
|
|
# restart: always
|
|
# ports:
|
|
# - "80:80"
|
|
# logging: *default-logging
|
|
|
|
# storefront: # TODO complete the service for future "storefront" Vite-Vue3 base storefront app
|
|
# container_name: storefront
|
|
# build:
|
|
# - dockerfile: Dockerfile.storefront
|
|
# - context: ./storefront
|
|
# logging: *default-logging
|
|
|
|
volumes:
|
|
es-data:
|