version: "3.7" services: backend: image: doccano/doccano:backend volumes: - static_volume:/backend/staticfiles - media:/backend/media - tmp_file:/backend/filepond-temp-uploads environment: ADMIN_USERNAME: "${ADMIN_USERNAME}" ADMIN_PASSWORD: "${ADMIN_PASSWORD}" ADMIN_EMAIL: ${ADMIN_EMAIL} CELERY_BROKER_URL: "amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@rabbitmq" DATABASE_URL: "postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable" ALLOW_SIGNUP: "False" DEBUG: "False" DJANGO_SETTINGS_MODULE: "config.settings.production" depends_on: - postgres networks: - network-backend - network-frontend celery: image: doccano/doccano:backend volumes: - media:/backend/media - tmp_file:/backend/filepond-temp-uploads entrypoint: ["/opt/bin/prod-celery.sh"] environment: PYTHONUNBUFFERED: "1" CELERY_BROKER_URL: "amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@rabbitmq" DATABASE_URL: "postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable" DJANGO_SETTINGS_MODULE: "config.settings.production" depends_on: - postgres - rabbitmq networks: - network-backend flower: image: doccano/doccano:backend entrypoint: ["/opt/bin/prod-flower.sh"] environment: PYTHONUNBUFFERED: "1" CELERY_BROKER_URL: "amqp://${RABBITMQ_DEFAULT_USER}:${RABBITMQ_DEFAULT_PASS}@rabbitmq" DATABASE_URL: "postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable" DJANGO_SETTINGS_MODULE: "config.settings.production" FLOWER_BASIC_AUTH: "${FLOWER_BASIC_AUTH}" # Format "username:password" depends_on: - celery ports: - 5555:5555 networks: - network-backend - network-frontend rabbitmq: image: rabbitmq:3.10.7-alpine environment: RABBITMQ_DEFAULT_USER: "${RABBITMQ_DEFAULT_USER}" RABBITMQ_DEFAULT_PASS: "${RABBITMQ_DEFAULT_PASS}" ports: - 5672:5672 networks: - network-backend nginx: image: doccano/doccano:frontend command: > /bin/sh -c "envsubst ' $${WORKER_PROCESSES} '< /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf && nginx -g 'daemon off;'" environment: API_URL: "http://backend:8000" GOOGLE_TRACKING_ID: "" WORKER_PROCESSES: "auto" volumes: - static_volume:/static - media:/media ports: - 80:8080 depends_on: - backend networks: - network-frontend postgres: image: postgres:13.3-alpine volumes: - postgres_data:/var/lib/postgresql/data/ environment: POSTGRES_USER: "${POSTGRES_USER}" POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}" POSTGRES_DB: "${POSTGRES_DB}" networks: - network-backend volumes: postgres_data: static_volume: media: tmp_file: networks: network-backend: network-frontend: