--- x-shared: zammad-service: &zammad-service environment: &zammad-environment MEMCACHE_SERVERS: ${MEMCACHE_SERVERS:-zammad-memcached:11211} POSTGRESQL_DB: ${POSTGRES_DB:-zammad_production} POSTGRESQL_HOST: ${POSTGRES_HOST:-zammad-postgresql} POSTGRESQL_USER: ${POSTGRES_USER:-zammad} POSTGRESQL_PASS: ${POSTGRES_PASS:-zammad} POSTGRESQL_PORT: ${POSTGRES_PORT:-5432} POSTGRESQL_OPTIONS: ${POSTGRESQL_OPTIONS:-?pool=50} POSTGRESQL_DB_CREATE: REDIS_URL: ${REDIS_URL:-redis://zammad-redis:6379} REDIS_SENTINELS: REDIS_SENTINEL_NAME: REDIS_USERNAME: REDIS_PASSWORD: REDIS_SENTINEL_USERNAME: REDIS_SENTINEL_PASSWORD: S3_URL: BACKUP_DIR: "${BACKUP_DIR:-/var/tmp/zammad}" BACKUP_TIME: "${BACKUP_TIME:-03:00}" BACKUP_ON_START: "${BACKUP_ON_START:-true}" HOLD_DAYS: "${HOLD_DAYS:-10}" TZ: "${TZ:-Europe/Berlin}" AUTOWIZARD_JSON: AUTOWIZARD_RELATIVE_PATH: ELASTICSEARCH_ENABLED: ELASTICSEARCH_SCHEMA: ELASTICSEARCH_HOST: ELASTICSEARCH_PORT: ELASTICSEARCH_USER: ELASTICSEARCH_PASS: ELASTICSEARCH_NAMESPACE: ELASTICSEARCH_REINDEX: NGINX_PORT: NGINX_CLIENT_MAX_BODY_SIZE: NGINX_SERVER_NAME: NGINX_SERVER_SCHEME: RAILS_TRUSTED_PROXIES: ZAMMAD_HTTP_TYPE: ZAMMAD_FQDN: ZAMMAD_WEB_CONCURRENCY: ZAMMAD_MANAGE_SESSIONS_JOBS_WORKERS: ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS: ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS: ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS: ZAMMAD_PROCESS_DELAYED_JOBS_WORKER_THREADS: ZAMMAD_PROCESS_DELAYED_AI_JOBS_WORKERS: ZAMMAD_PROCESS_DELAYED_AI_JOBS_WORKER_THREADS: ZAMMAD_PROCESS_DELAYED_COMMUNICATION_INBOUND_JOBS_WORKERS: ZAMMAD_PROCESS_DELAYED_COMMUNICATION_INBOUND_JOBS_WORKER_THREADS: ZAMMAD_OTRS_IMPORT_READ_TIMEOUT: ZAMMAD_OTRS_IMPORT_TOTAL_TIMEOUT: ZAMMAD_HTTP_OPEN_TIMEOUT: ZAMMAD_HTTP_READ_TIMEOUT: ZAMMAD_HTTP_TOTAL_TIMEOUT: ZAMMAD_HTTP_AI_READ_TIMEOUT: ZAMMAD_HTTP_AI_TOTAL_TIMEOUT: ZAMMAD_HTTP_ELASTICSEARCH_READ_TIMEOUT: ZAMMAD_HTTP_ELASTICSEARCH_TOTAL_TIMEOUT: ZAMMAD_HTTP_ELASTICSEARCH_REINDEX_READ_TIMEOUT: ZAMMAD_HTTP_ELASTICSEARCH_REINDEX_TOTAL_TIMEOUT: ZAMMAD_HTTP_IMPORT_ATTACHMENT_READ_TIMEOUT: ZAMMAD_HTTP_IMPORT_ATTACHMENT_TOTAL_TIMEOUT: ZAMMAD_HTTP_WEBHOOK_READ_TIMEOUT: ZAMMAD_HTTP_WEBHOOK_TOTAL_TIMEOUT: ZAMMAD_PROCESS_SESSIONS_JOBS_DISABLE: ZAMMAD_MANAGE_SESSIONS_JOBS_DISABLE: ZAMMAD_PROCESS_SCHEDULED_JOBS_DISABLE: ZAMMAD_PROCESS_DELAYED_JOBS_DISABLE: ZAMMAD_PROCESS_DELAYED_AI_JOBS_DISABLE: ZAMMAD_PROCESS_DELAYED_COMMUNICATION_INBOUND_JOBS_DISABLE: ZAMMAD_GRAPHQL_INTROSPECTION: ZAMMAD_AI_API_URL: ZAMMAD_AI_TOKEN: ZAMMAD_UI_BULK_BACKGROUND_UPDATE_THRESHOLD: ZAMMAD_SETTING_TTL: ZAMMAD_SAFE_MODE: ZAMMAD_WEBSOCKET_SESSION_STORE_FORCE_FS_BACKEND: ZAMMAD_RAILSSERVER_PORT: ZAMMAD_SESSION_JOBS_CONCURRENT: VIRTUAL_HOST: VIRTUAL_PORT: LETSENCRYPT_HOST: LETSENCRYPT_EMAIL: # image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-7.0.1-0053} image: ghcr.io/zammad/zammad:6.5.0-101 restart: ${RESTART:-always} env_file: .env volumes: - zammad-backup:/var/tmp/zammad:ro - zammad-storage:/opt/zammad/storage depends_on: zammad-memcached: condition: service_healthy zammad-postgresql: condition: service_healthy zammad-redis: condition: service_healthy services: zammad-backup: <<: *zammad-service command: ["zammad-backup"] volumes: - zammad-backup:/var/tmp/zammad - zammad-storage:/opt/zammad/storage user: 0:0 zammad-elasticsearch: image: elasticsearch:${ELASTICSEARCH_VERSION:-9.4.2} restart: ${RESTART:-always} volumes: - elasticsearch-data:/usr/share/elasticsearch/data environment: discovery.type: single-node xpack.security.enabled: "false" ES_JAVA_OPTS: ${ELASTICSEARCH_JAVA_OPTS:--Xms1g -Xmx1g} zammad-init: <<: *zammad-service command: ["zammad-init"] depends_on: zammad-postgresql: condition: service_healthy restart: on-failure user: 0:0 zammad-memcached: command: memcached -m 256M image: memcached:${MEMCACHE_VERSION:-1.6.42-alpine} restart: ${RESTART:-always} healthcheck: test: ["CMD", "nc", "-z", "127.0.0.1", "11211"] interval: 10s timeout: 5s start_period: 10s retries: 5 zammad-nginx: <<: *zammad-service command: ["zammad-nginx"] expose: - "${NGINX_PORT:-8080}" networks: - default - proxy depends_on: zammad-railsserver: condition: service_healthy zammad-postgresql: environment: POSTGRES_DB: ${POSTGRES_DB:-zammad_production} POSTGRES_USER: ${POSTGRES_USER:-zammad} POSTGRES_PASSWORD: ${POSTGRES_PASS:-zammad} image: postgres:${POSTGRES_VERSION:-17.10-alpine} restart: ${RESTART:-always} volumes: - postgresql-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 10s timeout: 5s start_period: 60s retries: 5 zammad-railsserver: <<: *zammad-service command: ["zammad-railsserver"] healthcheck: test: [ "CMD", "curl", "-sf", "http://127.0.0.1:${ZAMMAD_RAILSSERVER_PORT:-3000}", ] interval: 30s timeout: 5s start_period: 120s retries: 3 zammad-redis: image: redis:${REDIS_VERSION:-8.8.0-alpine} restart: ${RESTART:-always} volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s start_period: 10s retries: 5 zammad-scheduler: <<: *zammad-service command: ["zammad-scheduler"] 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 networks: proxy: external: true