121 lines
2.4 KiB
YAML
121 lines
2.4 KiB
YAML
volumes:
|
|
logs:
|
|
media:
|
|
postgres-data:
|
|
static-files:
|
|
|
|
x-db-env: &db-env
|
|
POSTGRES_HOST:
|
|
POSTGRES_PORT:
|
|
POSTGRES_DB:
|
|
POSTGRES_USER:
|
|
POSTGRES_PASSWORD:
|
|
|
|
x-django-build-env: &django-build-env
|
|
<<: *db-env
|
|
DJANGO_SECRET_KEY:
|
|
DJANGO_SETTINGS_MODULE:
|
|
|
|
x-django-env: &django-env
|
|
<<: *django-build-env
|
|
VERSION:
|
|
|
|
# Email
|
|
EMAIL_HOST:
|
|
EMAIL_PORT:
|
|
EMAIL_HOST_USER:
|
|
EMAIL_HOST_PASSWORD:
|
|
EMAIL_USE_TLS:
|
|
EMAIL_USE_SSL:
|
|
EMAIL_DEFAULT_FROM:
|
|
|
|
# Sentry
|
|
SENTRY_DSN:
|
|
|
|
services:
|
|
db:
|
|
environment:
|
|
<<: *db-env
|
|
image: postgres:15
|
|
healthcheck:
|
|
# Note that --env-file should be used to set these correctly
|
|
test: /usr/bin/pg_isready --username="${POSTGRES_USER}" --dbname="${POSTGRES_DB}"
|
|
interval: 5s
|
|
timeout: 10s
|
|
retries: 10
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
|
|
rabbitmq:
|
|
image: rabbitmq:4
|
|
|
|
memcached:
|
|
image: memcached:1.6
|
|
entrypoint:
|
|
- memcached
|
|
- -m 64
|
|
|
|
celery:
|
|
build:
|
|
context: .
|
|
dockerfile: ./docker/django
|
|
target: production
|
|
args:
|
|
<<: *django-build-env
|
|
environment:
|
|
<<: *django-env
|
|
command: |
|
|
/app/.venv/bin/celery --app newsreader
|
|
--workdir /app/src/
|
|
worker --loglevel INFO
|
|
--concurrency 2
|
|
--beat
|
|
--scheduler django
|
|
-n worker1@%h
|
|
-n worker2@%h
|
|
healthcheck:
|
|
test: celery --app newsreader status || exit 1
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 5
|
|
depends_on:
|
|
rabbitmq:
|
|
condition: service_started
|
|
memcached:
|
|
condition: service_started
|
|
db:
|
|
condition: service_healthy
|
|
django:
|
|
condition: service_healthy
|
|
volumes:
|
|
- logs:/app/logs
|
|
|
|
django:
|
|
build:
|
|
context: .
|
|
dockerfile: ./docker/django
|
|
target: production
|
|
args:
|
|
<<: *django-build-env
|
|
environment:
|
|
<<: *django-env
|
|
entrypoint: /app/bin/docker-entrypoint.sh
|
|
command: |
|
|
/app/.venv/bin/gunicorn --bind 0.0.0.0:8000
|
|
--workers 3
|
|
--chdir /app/src/
|
|
newsreader.wsgi:application
|
|
healthcheck:
|
|
test: /usr/bin/curl --fail http://django:8000 || exit 1
|
|
interval: 10s
|
|
timeout: 10s
|
|
retries: 5
|
|
depends_on:
|
|
memcached:
|
|
condition: service_started
|
|
db:
|
|
condition: service_healthy
|
|
volumes:
|
|
- logs:/app/logs
|
|
- media:/app/media
|
|
- static-files:/app/static
|