diff --git a/.env.sample b/.env.sample index 927f937..8cd25e4 100644 --- a/.env.sample +++ b/.env.sample @@ -6,3 +6,6 @@ DOMAIN=zammad.example.com #EXTRA_DOMAINS=', `www.zammad.example.com`' LETS_ENCRYPT_ENV=production + +POSTGRES_USER=zammad +POSTGRES_PASS=zammad diff --git a/compose.yml b/compose.yml index a2c3805..c5a55cc 100644 --- a/compose.yml +++ b/compose.yml @@ -2,16 +2,68 @@ version: "3.8" services: + + zammad-backup: + command: ["zammad-backup"] + depends_on: + - zammad-railsserver + - zammad-postgresql + entrypoint: /usr/local/bin/backup.sh + environment: + - BACKUP_SLEEP=86400 + - HOLD_DAYS=10 + - POSTGRESQL_USER=${POSTGRES_USER} + - POSTGRESQL_PASSWORD=${POSTGRES_PASS} + image: zammad/zammad-docker-compose:zammad-postgresql-5.1.1-11 + volumes: + - zammad-backup:/var/tmp/zammad + - zammad-data:/opt/zammad + + zammad-elasticsearch: + environment: + - discovery.type=single-node + image: zammad/zammad-docker-compose:zammad-elasticsearch-5.1.1-11 + volumes: + - elasticsearch-data:/usr/share/elasticsearch/data + + zammad-init: + command: ["zammad-init"] + depends_on: + - zammad-postgresql + environment: + - MEMCACHE_SERVERS=zammad-memcached:11211 + - POSTGRESQL_USER=${POSTGRES_USER} + - POSTGRESQL_PASS=${POSTGRES_PASS} + - REDIS_URL=redis://zammad-redis:6379 + image: zammad/zammad-docker-compose:zammad-5.1.1-11 + volumes: + - zammad-data:/opt/zammad + deploy: + restart_policy: + condition: on-failure + + zammad-memcached: + command: memcached -m 256M + image: memcached:1.6.10-alpine + app: - image: nginx:1.20.0 + command: ["zammad-nginx"] + depends_on: + - zammad-railsserver + image: zammad/zammad-docker-compose:zammad-5.1.1-11 + volumes: + - zammad-data:/opt/zammad networks: - proxy + - default + environment: + - NGINX_SERVER_SCHEME=http deploy: restart_policy: condition: on-failure labels: - "traefik.enable=true" - - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80" + - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=8080" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" @@ -20,13 +72,64 @@ services: #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true" #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" - "coop-cloud.${STACK_NAME}.version=" - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost"] - interval: 30s - timeout: 10s - retries: 10 - start_period: 1m + + zammad-postgresql: + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASS} + image: zammad/zammad-docker-compose:zammad-postgresql-5.1.1-11 + volumes: + - postgresql-data:/var/lib/postgresql/data + + zammad-railsserver: + command: ["zammad-railsserver"] + depends_on: + - zammad-memcached + - zammad-postgresql + - zammad-redis + environment: + - MEMCACHE_SERVERS=zammad-memcached:11211 + - REDIS_URL=redis://zammad-redis:6379 + image: zammad/zammad-docker-compose:zammad-5.1.1-11 + volumes: + - zammad-data:/opt/zammad + + zammad-redis: + image: redis:6.2.5-alpine + + zammad-scheduler: + command: ["zammad-scheduler"] + depends_on: + - zammad-memcached + - zammad-railsserver + - zammad-redis + environment: + - MEMCACHE_SERVERS=zammad-memcached:11211 + - REDIS_URL=redis://zammad-redis:6379 + image: zammad/zammad-docker-compose:zammad-5.1.1-11 + volumes: + - zammad-data:/opt/zammad + + zammad-websocket: + command: ["zammad-websocket"] + depends_on: + - zammad-memcached + - zammad-railsserver + - zammad-redis + environment: + - MEMCACHE_SERVERS=zammad-memcached:11211 + - REDIS_URL=redis://zammad-redis:6379 + image: zammad/zammad-docker-compose:zammad-5.1.1-11 + volumes: + - zammad-data:/opt/zammad + +volumes: + elasticsearch-data: + postgresql-data: + zammad-backup: + zammad-data: networks: + default: proxy: external: true