citadel/services/taiga/docker-compose.yml
2025-06-24 19:44:41 +02:00

194 lines
5.2 KiB
YAML

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