Skip to content

Commit bc2a3ae

Browse files
committed
feat(zammad): use x-shared section
An x-shared section was added to the stack.yml file, similar as in the original docker-compose yaml file to reuse environment settings etc. in several Zammad services.
1 parent 4a73d7e commit bc2a3ae

File tree

1 file changed

+151
-159
lines changed

1 file changed

+151
-159
lines changed

src/development/stack.yml

Lines changed: 151 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
# Vibetype
44
# https://github.com/maevsi/vibetype/
55
---
6+
7+
#version: "3.7"
8+
69
secrets:
710
grafana_admin_email:
811
# The observation dashboard's admin email.
@@ -100,6 +103,68 @@ secrets:
100103
vibetype_turnstile-key:
101104
# The captcha provider's application key.
102105
file: ./secrets/vibetype/turnstile-key.secret
106+
107+
x-shared:
108+
zammad-service: &zammad-service
109+
environment: &zammad-environment
110+
MEMCACHE_SERVERS: ${MEMCACHE_SERVERS:-zammad-memcached:11211}
111+
POSTGRESQL_DB: zammad
112+
POSTGRESQL_HOST: postgres
113+
POSTGRESQL_USER: zammad
114+
POSTGRESQL_PASS: zammad
115+
POSTGRESQL_PORT: 5432
116+
POSTGRESQL_OPTIONS: ${POSTGRESQL_OPTIONS:-?pool=50}
117+
POSTGRESQL_DB_CREATE: "false"
118+
REDIS_URL: ${REDIS_URL:-redis://zammad-redis:6379}
119+
S3_URL:
120+
# Backup settings
121+
BACKUP_DIR: "${BACKUP_DIR:-/var/tmp/zammad}"
122+
BACKUP_TIME: "${BACKUP_TIME:-03:00}"
123+
HOLD_DAYS: "${HOLD_DAYS:-10}"
124+
TZ: "${TZ:-Europe/Berlin}"
125+
# Allow passing in these variables via .env:
126+
AUTOWIZARD_JSON:
127+
AUTOWIZARD_RELATIVE_PATH:
128+
ELASTICSEARCH_ENABLED:
129+
ELASTICSEARCH_SCHEMA:
130+
ELASTICSEARCH_HOST:
131+
ELASTICSEARCH_PORT:
132+
ELASTICSEARCH_USER: ${ELASTICSEARCH_USER:-elastic}
133+
ELASTICSEARCH_PASS: ${ELASTICSEARCH_PASS:-zammad}
134+
ELASTICSEARCH_NAMESPACE:
135+
ELASTICSEARCH_REINDEX:
136+
NGINX_PORT: 8080
137+
NGINX_CLIENT_MAX_BODY_SIZE:
138+
NGINX_SERVER_NAME: zammad.${STACK_DOMAIN}
139+
NGINX_SERVER_SCHEME: https
140+
RAILS_TRUSTED_PROXIES:
141+
ZAMMAD_HTTP_TYPE:
142+
ZAMMAD_FQDN:
143+
ZAMMAD_WEB_CONCURRENCY:
144+
ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS:
145+
ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS:
146+
ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS:
147+
ZAMMAD_RAILSSERVER_HOST: zammad-railsserver
148+
ZAMMAD_WEBSOCKET_HOST: zammad-websocket
149+
# ZAMMAD_SESSION_JOBS_CONCURRENT is deprecated, please use ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS instead.
150+
ZAMMAD_SESSION_JOBS_CONCURRENT:
151+
# Variables used by ngingx-proxy container for reverse proxy creations
152+
# for docs refer to https://github.com/nginx-proxy/nginx-proxy
153+
VIRTUAL_HOST:
154+
VIRTUAL_PORT:
155+
# Variables used by acme-companion for retrieval of LetsEncrypt certificate
156+
# for docs refer to https://github.com/nginx-proxy/acme-companion
157+
LETSENCRYPT_HOST:
158+
LETSENCRYPT_EMAIL:
159+
160+
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.5.0-89}
161+
volumes:
162+
- zammad-storage:/opt/zammad/storage
163+
depends_on:
164+
- zammad-memcached
165+
- postgresql
166+
- zammad-redis
167+
103168
services:
104169
adminer:
105170
# You can access the database's frontend at [adminer.localhost](https://adminer.localhost/).
@@ -375,161 +440,6 @@ services:
375440
volumes:
376441
- ../../../reccoom/:/srv/app/
377442

378-
zammad-elasticsearch:
379-
image: bitnami/elasticsearch:${ELASTICSEARCH_VERSION:-8.18.0}
380-
restart: always
381-
volumes:
382-
- zammad_elasticsearch_data:/usr/share/elasticsearch/data
383-
environment:
384-
- discovery.type=single-node
385-
386-
zammad-init:
387-
image: zammad/zammad-docker-compose:latest
388-
restart: on-failure
389-
depends_on:
390-
- postgres
391-
- zammad-elasticsearch
392-
volumes:
393-
- zammad_storage:/opt/zammad/storage
394-
environment:
395-
- POSTGRESQL_DB_CREATE=false
396-
- POSTGRESQL_HOST=postgres
397-
- POSTGRESQL_USER_FILE=/run/secrets/POSTGRESQL_USER
398-
- POSTGRESQL_PASS_FILE=/run/secrets/POSTGRESQL_PASS
399-
- POSTGRESQL_DB=zammad
400-
- ELASTICSEARCH_HOST=zammad-elasticsearch
401-
- ELASTICSEARCH_PORT=9200
402-
- ZAMMAD_RAILSSERVER_HOST=zammad-railsserver
403-
- ZAMMAD_WEBSOCKET_HOST=zammad-websocket
404-
- NGINX_SERVER_NAME=zammad.${STACK_DOMAIN}
405-
- REDIS_URL=redis://zammad-redis:6379
406-
secrets:
407-
- source: postgres_role_service_zammad_username
408-
target: POSTGRESQL_USER
409-
- source: postgres_role_service_zammad_password
410-
target: POSTGRESQL_PASS
411-
command: ["zammad-init"]
412-
413-
zammad-railsserver:
414-
image: zammad/zammad-docker-compose:latest
415-
restart: always
416-
depends_on:
417-
- zammad-init
418-
environment:
419-
- POSTGRESQL_HOST=postgres
420-
- POSTGRESQL_USER_FILE=/run/secrets/POSTGRESQL_USER
421-
- POSTGRESQL_PASS_FILE=/run/secrets/POSTGRESQL_PASS
422-
- POSTGRESQL_DB=zammad
423-
- ELASTICSEARCH_HOST=zammad-elasticsearch
424-
- ELASTICSEARCH_PORT=9200
425-
- ZAMMAD_RAILSSERVER_HOST=zammad-railsserver
426-
- ZAMMAD_WEBSOCKET_HOST=zammad-websocket
427-
- REDIS_URL=redis://zammad-redis:6379
428-
secrets:
429-
- source: postgres_role_service_zammad_username
430-
target: POSTGRESQL_USER
431-
- source: postgres_role_service_zammad_password
432-
target: POSTGRESQL_PASS
433-
volumes:
434-
- zammad_storage:/opt/zammad/storage
435-
deploy:
436-
labels:
437-
- traefik.enable=true
438-
- traefik.http.routers.zammad-railsserver.entryPoints=web
439-
- traefik.http.routers.zammad-railsserver.middlewares=redirectscheme
440-
- traefik.http.routers.zammad-railsserver.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/api`)
441-
- traefik.http.routers.zammad-railsserver_secure.entryPoints=web-secure
442-
- traefik.http.routers.zammad-railsserver_secure.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/api`)
443-
- traefik.http.routers.zammad-railsserver_secure.tls.options=mintls13@file
444-
- traefik.http.services.zammad-railsserver.loadbalancer.server.port=3000
445-
command: ["zammad-railsserver"]
446-
447-
zammad-scheduler:
448-
image: zammad/zammad-docker-compose:latest
449-
restart: always
450-
depends_on:
451-
- zammad-init
452-
environment:
453-
- POSTGRESQL_HOST=postgres
454-
- POSTGRESQL_USER_FILE=/run/secrets/POSTGRESQL_USER
455-
- POSTGRESQL_PASS_FILE=/run/secrets/POSTGRESQL_PASS
456-
- POSTGRESQL_DB=zammad
457-
- ELASTICSEARCH_HOST=zammad-elasticsearch
458-
- ELASTICSEARCH_PORT=9200
459-
- ZAMMAD_RAILSSERVER_HOST=zammad-railsserver
460-
- ZAMMAD_WEBSOCKET_HOST=zammad-websocket
461-
- REDIS_URL=redis://zammad-redis:6379
462-
463-
secrets:
464-
- source: postgres_role_service_zammad_username
465-
target: POSTGRESQL_USER
466-
- source: postgres_role_service_zammad_password
467-
target: POSTGRESQL_PASS
468-
command: ["zammad-scheduler"]
469-
470-
zammad-redis:
471-
image: redis:7-alpine
472-
restart: always
473-
474-
zammad-websocket:
475-
image: zammad/zammad-docker-compose:latest
476-
restart: always
477-
depends_on:
478-
- zammad-init
479-
environment:
480-
- POSTGRESQL_HOST=postgres
481-
- POSTGRESQL_USER_FILE=/run/secrets/POSTGRESQL_USER
482-
- POSTGRESQL_PASS_FILE=/run/secrets/POSTGRESQL_PASS
483-
- POSTGRESQL_DB=zammad
484-
- ELASTICSEARCH_HOST=zammad-elasticsearch
485-
- ELASTICSEARCH_PORT=9200
486-
- ZAMMAD_RAILSSERVER_HOST=zammad-railsserver
487-
- ZAMMAD_WEBSOCKET_HOST=zammad-websocket
488-
- REDIS_URL=redis://zammad-redis:6379
489-
secrets:
490-
- source: postgres_role_service_zammad_username
491-
target: POSTGRESQL_USER
492-
- source: postgres_role_service_zammad_password
493-
target: POSTGRESQL_PASS
494-
command: ["zammad-websocket"]
495-
deploy:
496-
labels:
497-
- traefik.enable=true
498-
- traefik.http.routers.zammad-websocket.entryPoints=web
499-
- traefik.http.routers.zammad-websocket.middlewares=redirectscheme
500-
- traefik.http.routers.zammad-websocket.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/ws`)
501-
- traefik.http.routers.zammad-websocket_secure.entryPoints=web-secure
502-
- traefik.http.routers.zammad-websocket_secure.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/ws`)
503-
- traefik.http.routers.zammad-websocket_secure.tls.options=mintls13@file
504-
- traefik.http.services.zammad-websocket.loadbalancer.server.port=6042
505-
506-
zammad-nginx:
507-
image: zammad/zammad-docker-compose:latest
508-
restart: always
509-
depends_on:
510-
- zammad-init
511-
- zammad-railsserver
512-
- zammad-websocket
513-
environment:
514-
- NGINX_SERVER_NAME=zammad.${STACK_DOMAIN}
515-
- REDIS_URL=redis://zammad-redis:6379
516-
volumes:
517-
- zammad_storage:/opt/zammad/storage
518-
519-
deploy:
520-
labels:
521-
- traefik.enable=true
522-
- traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`)
523-
- traefik.http.routers.zammad.entryPoints=web
524-
- traefik.http.routers.zammad.middlewares=redirectscheme
525-
- traefik.http.routers.zammad_secure.rule=Host(`zammad.${STACK_DOMAIN}`)
526-
- traefik.http.routers.zammad_secure.entryPoints=web-secure
527-
- traefik.http.routers.zammad_secure.tls=true
528-
- traefik.http.routers.zammad_secure.tls.options=mintls13@file
529-
- traefik.http.services.zammad.loadbalancer.server.port=80
530-
command: ["zammad-nginx"]
531-
command: ["sh", "-c", "sleep 60 && zammad-nginx"]
532-
533443
redpanda:
534444
# You can access the event streaming platform's ui as described under `redpanda-console`.
535445
command:
@@ -709,8 +619,80 @@ services:
709619
- ${PNPM_STORE_DIR}:/srv/.pnpm-store/ #DARGSTACK-REMOVE
710620
- ./certificates/:/srv/certificates/ #DARGSTACK-REMOVE
711621
- ../../../vibetype/:/srv/app/ #DARGSTACK-REMOVE
712-
- ./configurations/postgraphile/jwtRS256.key.pub:/run/environment-variables/NUXT_PUBLIC_VIO_AUTH_JWT_PUBLIC_KEY:ro
713-
version: "3.7"
622+
- ./configurations/postgraphile/jwtRS256.key.pub:/run/environment-variables/NUXT_PUB1LIC_VIO_AUTH_JWT_PUBLIC_KEY:ro
623+
624+
zammad-backup:
625+
# Zammad backup.
626+
<<: *zammad-service
627+
command: ["zammad-backup"]
628+
volumes:
629+
- zammad-backup:/var/tmp/zammad
630+
- zammad-storage:/opt/zammad/storage:ro
631+
user: 0:0
632+
633+
zammad-elasticsearch:
634+
# Zammad Elastisearch.
635+
image: bitnami/elasticsearch:${ELASTICSEARCH_VERSION:-8.18.0}
636+
volumes:
637+
- zammad-elasticsearch-data:/bitnami/elasticsearch/data
638+
environment:
639+
# Enable authorization without HTTPS. For external access with
640+
# SSL termination, use solutions like nginx-proxy-manager.
641+
ELASTICSEARCH_ENABLE_SECURITY: 'true'
642+
ELASTICSEARCH_SKIP_TRANSPORT_TLS: 'true'
643+
ELASTICSEARCH_ENABLE_REST_TLS: 'false'
644+
# ELASTICSEARCH_USER is hardcoded to 'elastic' in the container.
645+
ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASS:-zammad}
646+
647+
zammad-init:
648+
# Zammad initialization.
649+
<<: *zammad-service
650+
command: ["zammad-init"]
651+
depends_on:
652+
- postgresql
653+
user: 0:0
654+
655+
zammad-memcached:
656+
# Zammad memcached.
657+
command: memcached -m 256M
658+
image: memcached:${MEMCACHE_VERSION:-1.6.38-alpine}
659+
660+
zammad-nginx:
661+
# You can access the Zammad frontend at [zammad.localhost](https://zammad.localhost/).
662+
<<: *zammad-service
663+
deploy:
664+
labels:
665+
- traefik.enable=true
666+
- traefik.http.routers.zammad.entryPoints=web
667+
- traefik.http.routers.zammad.middlewares=redirectscheme #DARGSTACK-REMOVE
668+
- traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`)
669+
- traefik.http.routers.zammad_secure.entryPoints=web-secure
670+
- traefik.http.routers.zammad_secure.rule=Host(`zammad.${STACK_DOMAIN}`)
671+
- traefik.http.routers.zammad_secure.tls.options=mintls13@file #DARGSTACK-REMOVE
672+
- traefik.http.services.zammad.loadbalancer.server.port=8080
673+
command: ["zammad-nginx"]
674+
675+
zammad-railsserver:
676+
# Zammad railsserver.
677+
<<: *zammad-service
678+
command: ["zammad-railsserver"]
679+
680+
zammad-redis:
681+
# Zammad redis.
682+
image: redis:${REDIS_VERSION:-7.4.3-alpine}
683+
volumes:
684+
- zammad-redis-data:/data
685+
686+
zammad-scheduler:
687+
# Zammad scheduler.
688+
<<: *zammad-service
689+
command: ["zammad-scheduler"]
690+
691+
zammad-websocket:
692+
# Zammad websocket.
693+
<<: *zammad-service
694+
command: ["zammad-websocket"]
695+
714696
volumes:
715697
debezium_kafka_configuration:
716698
# The change data capture's configuration.
@@ -739,5 +721,15 @@ volumes:
739721
redpanda_data:
740722
# The message queue's data.
741723
{}
742-
zammad_elasticsearch_data: {}
743-
zammad_storage: {}
724+
zammad-elasticsearch-data:
725+
# Zammad's elastisearch data
726+
{}
727+
zammad-redis-data:
728+
# Zammad's redis data
729+
{}
730+
zammad-backup:
731+
# Zammad's backup data
732+
{}
733+
zammad-storage:
734+
# Zammad's storage data
735+
{}

0 commit comments

Comments
 (0)