--- {# https://github.com/zammad/zammad-docker-compose Docker Compose does not allow defining variables in the compose file (only in .env files), so we use Jinja variables instead see https://github.com/zammad/zammad-docker-compose/blob/master/.env #} {%- set ELASTICSEARCH_VERSION = "8" | quote -%} {%- set IMAGE_REPO = "ghcr.io/zammad/zammad" | quote -%} {%- set MEMCACHE_SERVERS = "zammad-memcached:11211" | quote -%} {%- set MEMCACHE_VERSION = "1.6-alpine" | quote -%} {%- set POSTGRES_DB = "zammad_production" | quote -%} {%- set POSTGRES_HOST = "zammad-postgresql" | quote -%} {%- set POSTGRES_USER = "zammad" | quote -%} {%- set POSTGRES_PASS = lookup("community.general.passwordstore", "noc/vm-secrets/chaosknoten/zammad/DB_PASSWORD", create=false, missing="error") | quote -%} {%- set POSTGRES_PORT = "5432" | quote -%} {%- set POSTGRES_VERSION = "15-alpine" | quote -%} {%- set REDIS_URL = "redis://zammad-redis:6379" | quote -%} {%- set REDIS_VERSION = "7-alpine" | quote -%} {%- set RESTART = "always" | quote -%} {%- set VERSION = "6" | quote -%} x-shared: zammad-service: &zammad-service environment: &zammad-environment MEMCACHE_SERVERS: {{ MEMCACHE_SERVERS }} POSTGRESQL_DB: {{ POSTGRES_DB }} POSTGRESQL_HOST: {{ POSTGRES_HOST }} POSTGRESQL_USER: {{ POSTGRES_USER }} POSTGRESQL_PASS: {{ POSTGRES_PASS }} POSTGRESQL_PORT: {{ POSTGRES_PORT }} REDIS_URL: {{ REDIS_URL }} # Allow passing in these variables via .env: AUTOWIZARD_JSON: AUTOWIZARD_RELATIVE_PATH: ELASTICSEARCH_ENABLED: ELASTICSEARCH_HOST: ELASTICSEARCH_PORT: ELASTICSEARCH_SCHEMA: ELASTICSEARCH_NAMESPACE: ELASTICSEARCH_REINDEX: ELASTICSEARCH_SSL_VERIFY: NGINX_PORT: NGINX_SERVER_NAME: NGINX_SERVER_SCHEME: https POSTGRESQL_DB_CREATE: POSTGRESQL_OPTIONS: RAILS_TRUSTED_PROXIES: ZAMMAD_WEB_CONCURRENCY: ZAMMAD_SESSION_JOBS: ZAMMAD_PROCESS_SCHEDULED: ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS: image: {{ IMAGE_REPO }}:{{ VERSION }} restart: {{ RESTART }} volumes: - zammad-storage:/opt/zammad/storage - zammad-var:/opt/zammad/var depends_on: - zammad-memcached - zammad-postgresql - zammad-redis services: zammad-backup: command: ["zammad-backup"] depends_on: - zammad-railsserver - zammad-postgresql entrypoint: /usr/local/bin/backup.sh environment: <<: *zammad-environment BACKUP_TIME: "03:00" HOLD_DAYS: "10" TZ: Europe/Berlin image: postgres:{{ POSTGRES_VERSION }} restart: {{ RESTART }} volumes: - zammad-backup:/var/tmp/zammad - zammad-storage:/opt/zammad/storage:ro - zammad-var:/opt/zammad/var:ro - ./scripts/backup.sh:/usr/local/bin/backup.sh:ro zammad-elasticsearch: image: bitnami/elasticsearch:{{ ELASTICSEARCH_VERSION }} restart: {{ RESTART }} volumes: - elasticsearch-data:/bitnami/elasticsearch/data zammad-init: <<: *zammad-service command: ["zammad-init"] depends_on: - zammad-postgresql restart: on-failure user: 0:0 volumes: - zammad-storage:/opt/zammad/storage - zammad-var:/opt/zammad/var zammad-memcached: command: memcached -m 256M image: memcached:{{ MEMCACHE_VERSION }} restart: {{ RESTART }} zammad-nginx: <<: *zammad-service command: ["zammad-nginx"] expose: - "8080" ports: - "8080:8080" depends_on: - zammad-railsserver volumes: - zammad-var:/opt/zammad/var:ro # required for the zammad-ready check file zammad-postgresql: environment: POSTGRES_DB: {{ POSTGRES_DB }} POSTGRES_USER: {{ POSTGRES_USER }} POSTGRES_PASSWORD: {{ POSTGRES_PASS }} image: postgres:{{ POSTGRES_VERSION }} restart: {{ RESTART }} volumes: - postgresql-data:/var/lib/postgresql/data zammad-railsserver: <<: *zammad-service command: ["zammad-railsserver"] zammad-redis: image: redis:{{ REDIS_VERSION }} restart: {{ RESTART }} volumes: - redis-data:/data zammad-scheduler: <<: *zammad-service command: ["zammad-scheduler"] volumes: - /ansible_docker_compose/zammad-scheduler-database.yml:/opt/zammad/config/database.yml # workaround for connection pool issue zammad-websocket: <<: *zammad-service command: ["zammad-websocket"] volumes: elasticsearch-data: driver: local postgresql-data: driver: local redis-data: driver: local zammad-backup: driver: local zammad-storage: driver: local zammad-var: driver: local