x-environment: &default-back-environment # Database settings POSTGRES_DB: taiga POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_HOST: taiga-db POSTGRES_PORT: 5432 # Taiga settings TAIGA_SECRET_KEY: ${SECRET_KEY} TAIGA_SITES_SCHEME: ${TAIGA_SCHEME} TAIGA_SITES_DOMAIN: ${TAIGA_DOMAIN} TAIGA_SUBPATH: ${SUBPATH} # Email settings EMAIL_BACKEND: ${EMAIL_BACKEND} EMAIL_HOST: ${EMAIL_HOST} EMAIL_PORT: ${EMAIL_PORT} EMAIL_HOST_USER: ${EMAIL_HOST_USER} EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD} DEFAULT_FROM_EMAIL: ${EMAIL_DEFAULT_FROM} EMAIL_USE_TLS: ${EMAIL_USE_TLS} EMAIL_USE_SSL: ${EMAIL_USE_SSL} # RabbitMQ settings for events EVENTS_PUSH_BACKEND: "rabbitmq" EVENTS_PUSH_BACKEND_URL: "amqp://${RABBITMQ_USER}:${RABBITMQ_PASS}@taiga-events-rabbitmq:5672/${RABBITMQ_VHOST}" # RabbitMQ settings for async CELERY_BROKER_URL: "amqp://${RABBITMQ_USER}:${RABBITMQ_PASS}@taiga-async-rabbitmq:5672/${RABBITMQ_VHOST}" # Telemetry ENABLE_TELEMETRY: ${ENABLE_TELEMETRY} x-volumes: &default-back-volumes - /home/citadel/data/taiga/static:/taiga-back/static - /home/citadel/data/taiga/media:/taiga-back/media services: taiga-db: image: postgres:12.3 environment: POSTGRES_DB: taiga POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 2s timeout: 15s retries: 5 start_period: 3s volumes: - taiga-db-data:/var/lib/postgresql/data networks: - taiga_internal restart: unless-stopped labels: - "com.docker.compose.project=taiga" taiga-back: image: taigaio/taiga-back:latest environment: *default-back-environment volumes: *default-back-volumes networks: - taiga_internal - mail depends_on: taiga-db: condition: service_healthy taiga-events-rabbitmq: condition: service_started taiga-async-rabbitmq: condition: service_started restart: unless-stopped labels: - "com.docker.compose.project=taiga" - "backup.enable=true" taiga-async: image: taigaio/taiga-back:latest entrypoint: ["/taiga-back/docker/async_entrypoint.sh"] environment: *default-back-environment volumes: *default-back-volumes networks: - taiga_internal depends_on: taiga-db: condition: service_healthy taiga-async-rabbitmq: condition: service_started restart: unless-stopped labels: - "com.docker.compose.project=taiga" taiga-async-rabbitmq: image: rabbitmq:3.8-management-alpine environment: RABBITMQ_ERLANG_COOKIE: ${RABBITMQ_ERLANG_COOKIE} RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASS} RABBITMQ_DEFAULT_VHOST: ${RABBITMQ_VHOST} hostname: taiga-async-rabbitmq volumes: - taiga-async-rabbitmq-data:/var/lib/rabbitmq networks: - taiga_internal restart: unless-stopped labels: - "com.docker.compose.project=taiga" taiga-front: image: taigaio/taiga-front:latest environment: TAIGA_URL: "${TAIGA_SCHEME}://${TAIGA_DOMAIN}" TAIGA_WEBSOCKETS_URL: "${WEBSOCKETS_SCHEME}://${TAIGA_DOMAIN}" TAIGA_SUBPATH: "${SUBPATH}" networks: - taiga_internal restart: unless-stopped labels: - "com.docker.compose.project=taiga" taiga-events: image: taigaio/taiga-events:latest environment: RABBITMQ_USER: ${RABBITMQ_USER} RABBITMQ_PASS: ${RABBITMQ_PASS} TAIGA_SECRET_KEY: ${SECRET_KEY} networks: - taiga_internal depends_on: - taiga-events-rabbitmq restart: unless-stopped labels: - "com.docker.compose.project=taiga" taiga-events-rabbitmq: image: rabbitmq:3.8-management-alpine environment: RABBITMQ_ERLANG_COOKIE: ${RABBITMQ_ERLANG_COOKIE} RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER} RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASS} RABBITMQ_DEFAULT_VHOST: ${RABBITMQ_VHOST} hostname: taiga-events-rabbitmq volumes: - taiga-events-rabbitmq-data:/var/lib/rabbitmq networks: - taiga_internal restart: unless-stopped labels: - "com.docker.compose.project=taiga" taiga-protected: image: taigaio/taiga-protected:latest environment: MAX_AGE: ${ATTACHMENTS_MAX_AGE} SECRET_KEY: ${SECRET_KEY} networks: - taiga_internal restart: unless-stopped labels: - "com.docker.compose.project=taiga" taiga-gateway: image: nginx:1.19-alpine volumes: - /home/citadel/data/taiga/static:/taiga/static:ro - /home/citadel/data/taiga/media:/taiga/media:ro - ./taiga-gateway.conf:/etc/nginx/conf.d/default.conf:ro networks: - taiga_internal - services depends_on: - taiga-front - taiga-back - taiga-events volumes: taiga-db-data: name: taiga-db-data taiga-async-rabbitmq-data: name: taiga-async-rabbitmq-data taiga-events-rabbitmq-data: name: taiga-events-rabbitmq-data networks: services: external: true mail: external: true taiga_internal: driver: bridge name: taiga_internal