version: '3.7' # Any top-level key starting with x- in a Docker Compose file will be # ignored x-backend: &backend # yaml anchor definition image: ${APP_IMAGE}:${APP_TAG} volumes: - media_root:/app/media - xapian_index:/app/xapian_index environment: # PAPERMERGE__
__ - PAPERMERGE__MAIN__SECRET_KEY=${SECRET_KEY} - PAPERMERGE__DATABASE__TYPE=postgres - PAPERMERGE__DATABASE__USER=${DB_USER} - PAPERMERGE__DATABASE__NAME=${DB_NAME} - PAPERMERGE__DATABASE__PASSWORD=${DB_PASSWORD} - PAPERMERGE__DATABASE__HOST=${DB_HOST} - PAPERMERGE__REDIS__HOST=${REDIS_HOST} - PAPERMERGE__REDIS__PORT=${REDIS_PORT} - PAPERMERGE__MAIN__TIMEZONE=${TIMEZONE} # path where xapian index data is stored - PAPERMERGE__SEARCH__PATH=/app/xapian_index - DJANGO_SUPERUSER_USERNAME=${SUPERUSER_USERNAME} - DJANGO_SUPERUSER_EMAIL=${SUPERUSER_EMAIL} - DJANGO_SUPERUSER_PASSWORD=${SUPERUSER_PASSWORD} - DJANGO_SETTINGS_MODULE=config.settings services: worker: # celery worker <<: *backend command: worker ws_server: # websockets server / daphne <<: *backend command: ws_server labels: - "traefik.enable=true" - "traefik.http.routers.ws_server.rule=Host(`${USE_HOSTNAME}`) && PathPrefix(`/ws/`)" backend: # rest api backend / uwsgi <<: *backend labels: - "traefik.enable=true" - "traefik.http.routers.backend.rule=Host(`${USE_HOSTNAME}`) && PathPrefix(`/api/`)" db: image: postgres:14.4 volumes: - postgres_data:/var/lib/postgresql/data/ environment: - POSTGRES_USER=${DB_USER} - POSTGRES_DB=${DB_NAME} - POSTGRES_PASSWORD=${DB_PASSWORD} redis: image: 'redis:6' ports: - '6379:6379' volumes: - redis_data:/data traefik: image: "traefik:v2.6" command: #- "--log.level=DEBUG" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" ports: - "80:80" - "8080:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" frontend: # emberjs image: ${PAPERMERGE_JS_IMAGE}:${PAPERMERGE_JS_TAG} labels: - "traefik.enable=true" - "traefik.http.routers.traefik.rule=Host(`${USE_HOSTNAME}`) && PathPrefix(`/`)" volumes: postgres_data: media_root: xapian_index: redis_data: