awesome-stacks/stacks/zammad.yml
2024-10-31 20:06:22 +01:00

114 lines
3 KiB
Docker

# DOMAIN=example.com docker stack deploy -c zammad.yml zammad
# sudo sysctl -w vm.max_map_count=262144
# echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
# chown -R 1000:1000 elasticsearch storage var
x-zammad: &zammad
image: zammad/zammad-docker-compose:${VERSION:-6.3.1-201}
volumes:
- ${VOLUME_PATH}storage:/opt/zammad/storage
- ${VOLUME_PATH}var:/opt/zammad/var
environment:
- NGINX_SERVER_SCHEME=${SCHEME:-https}
- POSTGRESQL_DB=zammad
- POSTGRESQL_USER=zammad
- POSTGRESQL_PASS=myp%40ssw0rd
- POSTGRESQL_HOST=zammad-postgresql
- POSTGRESQL_OPTIONS=${POSTGRESQL_OPTIONS:-?pool=50}
- MEMCACHE_SERVERS=${MEMCACHE_SERVERS:-zammad-memcached:11211}
- REDIS_URL=redis://zammad-redis:6379
- TZ=${TZ:-Europe/Paris}
networks:
- internal
services:
zammad-init:
<<: *zammad
command: ["zammad-init"]
deploy:
restart_policy:
condition: on-failure
zammad-nginx:
<<: *zammad
command: ["zammad-nginx"]
deploy:
labels:
- traefik.enable=true
- traefik.http.routers.zammad-${NUMBER:-1}.rule=Host(`${DOMAIN:-zammad.localhost}`)
- traefik.http.routers.zammad-${NUMBER:-1}.entrypoints=${SCHEME:-https}
- traefik.http.routers.zammad-${NUMBER:-1}.service=zammad-${NUMBER:-1}
- traefik.http.routers.zammad-${NUMBER:-1}.tls.certresolver=letsencrypt
- traefik.http.services.zammad-${NUMBER:-1}.loadbalancer.server.port=8080
- traefik.http.routers.zammad-${NUMBER:-1}.middlewares=zammad-${NUMBER:-1}
- traefik.http.middlewares.zammad-${NUMBER:-1}.headers.customRequestHeaders.X-Forwarded-Proto=${SCHEME:-https}
networks:
- traefik
- internal
zammad-elasticsearch:
image: zammad/zammad-docker-compose:zammad-elasticsearch-5.2.3-32
environment:
- discovery.type=single-node
volumes:
- ${VOLUME_PATH}elasticsearch:/usr/share/elasticsearch/data
deploy:
resources:
limits:
memory: 5G
networks:
- internal
zammad-memcached:
image: memcached:1.6.31-alpine
command: memcached -m 256M
networks:
- internal
zammad-postgresql:
image: postgres:${POSTGRES_VERSION:-12-alpine}
command: postgres -c 'max_connections=250'
healthcheck:
test: ["CMD", "pg_isready", "-U", "zammad"]
volumes:
- ${VOLUME_PATH}postgresql:/var/lib/postgresql/data
environment:
- POSTGRES_DB=zammad
- POSTGRES_USER=zammad
- POSTGRES_PASSWORD=myp@ssw0rd
networks:
- internal
zammad-redis:
image: redis:${REDIS_VERSION:-7-alpine}
volumes:
- ${VOLUME_PATH}redis:/data
networks:
- internal
zammad-railsserver:
<<: *zammad
command: ["zammad-railsserver"]
zammad-scheduler:
<<: *zammad
command: ["zammad-scheduler"]
zammad-websocket:
<<: *zammad
command: ["zammad-websocket"]
volumes:
var:
redis:
storage:
elasticsearch:
postgresql:
networks:
internal:
driver: overlay
attachable: true
traefik:
external: true
name: traefik-net