- Redis / Celery / Celery Beat - кэширование популярных тегов и лучших участников - асинхронные уведомления в Centrifugo - отправка email-уведомлений через Celery - полнотекстовый поиск и подсказки - Docker Compose инфраструктура
123 lines
2.4 KiB
YAML
123 lines
2.4 KiB
YAML
services:
|
|
db:
|
|
image: postgres:16
|
|
container_name: postgres-container
|
|
restart: always
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB}
|
|
POSTGRES_USER: ${POSTGRES_USER}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
|
volumes:
|
|
- postgres_data:/var/lib/postgresql/data
|
|
networks:
|
|
- django-network
|
|
|
|
python-app:
|
|
build: .
|
|
container_name: django-app-container
|
|
restart: always
|
|
working_dir: /app
|
|
volumes:
|
|
- .:/app
|
|
- ./media:/app/media
|
|
env_file:
|
|
- .env
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
- maildev
|
|
command: >
|
|
sh -c "
|
|
python manage.py migrate --noinput &&
|
|
python manage.py collectstatic --noinput &&
|
|
gunicorn application.wsgi:application --config gunicorn_conf.py
|
|
"
|
|
networks:
|
|
- django-network
|
|
|
|
redis:
|
|
image: redis:7
|
|
container_name: redis-container
|
|
restart: always
|
|
volumes:
|
|
- redis_data:/data
|
|
ports:
|
|
- "6379:6379"
|
|
networks:
|
|
- django-network
|
|
|
|
celery:
|
|
build: .
|
|
container_name: celery-worker
|
|
command: celery -A application worker --loglevel=info
|
|
volumes:
|
|
- .:/app
|
|
env_file:
|
|
- .env
|
|
depends_on:
|
|
- redis
|
|
- db
|
|
networks:
|
|
- django-network
|
|
|
|
celery-beat:
|
|
build: .
|
|
container_name: celery-beat
|
|
command: celery -A application beat --loglevel=info -S redbeat.RedBeatScheduler
|
|
volumes:
|
|
- .:/app
|
|
env_file:
|
|
- .env
|
|
depends_on:
|
|
- redis
|
|
- db
|
|
networks:
|
|
- django-network
|
|
|
|
centrifugo:
|
|
image: centrifugo/centrifugo:latest
|
|
container_name: centrifugo
|
|
restart: always
|
|
command: centrifugo --config=/centrifugo/config.json
|
|
volumes:
|
|
- ./centrifugo:/centrifugo:ro
|
|
ports:
|
|
- "8001:8000"
|
|
networks:
|
|
- django-network
|
|
|
|
maildev:
|
|
image: maildev/maildev:latest
|
|
container_name: maildev
|
|
restart: always
|
|
ports:
|
|
- "1080:1080"
|
|
- "1025:1025"
|
|
networks:
|
|
- django-network
|
|
|
|
nginx:
|
|
image: nginx:latest
|
|
container_name: nginx-container
|
|
restart: always
|
|
ports:
|
|
- "8080:80"
|
|
volumes:
|
|
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
|
- ./static:/var/www/ask_pupkin/static:ro
|
|
- ./media:/var/www/ask_pupkin/uploads:ro
|
|
depends_on:
|
|
- python-app
|
|
networks:
|
|
- django-network
|
|
|
|
volumes:
|
|
redis_data:
|
|
postgres_data:
|
|
media_data:
|
|
|
|
networks:
|
|
django-network:
|