Add healthchecks

This commit is contained in:
2024-08-20 17:36:56 +02:00
parent 63c6b6de53
commit 6ae8b9543d
2 changed files with 64 additions and 14 deletions

View File

@ -10,4 +10,3 @@ LETS_ENCRYPT_ENV=production
SECRET_DB_PASSWORD_VERSION=v1 SECRET_DB_PASSWORD_VERSION=v1
#RAILS_TRUSTED_PROXIES=['127.0.0.1', '::1', 'your-traefik_app'] #RAILS_TRUSTED_PROXIES=['127.0.0.1', '::1', 'your-traefik_app']
X_FRAME_OPTIONS_ALLOW_FROM=none

View File

@ -38,7 +38,9 @@ x-shared:
ZAMMAD_PROCESS_SCHEDULED: ZAMMAD_PROCESS_SCHEDULED:
ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS: ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS:
image: ghcr.io/zammad/zammad:6.3.1-95 image: ghcr.io/zammad/zammad:6.3.1-95
restart: on-failure deploy:
restart_policy:
condition: on-failure
volumes: volumes:
- zammad-storage:/opt/zammad/storage - zammad-storage:/opt/zammad/storage
#old: - zammad-data:/opt/zammad #old: - zammad-data:/opt/zammad
@ -70,11 +72,19 @@ services:
zammad-elasticsearch: zammad-elasticsearch:
image: bitnami/elasticsearch:8.14.3 image: bitnami/elasticsearch:8.14.3
restart: on-failure deploy:
restart_policy:
condition: on-failure
volumes: volumes:
- elasticsearch-data:/bitnami/elasticsearch/data - elasticsearch-data:/bitnami/elasticsearch/data
environment: environment:
- discovery.type=single-node - discovery.type=single-node
healthcheck:
test: "/opt/bitnami/scripts/elasticsearch/healthcheck.sh"
interval: 30s
timeout: 10s
retries: 10
start_period: 5m
deploy: deploy:
resources: resources:
limits: limits:
@ -87,16 +97,20 @@ services:
command: ["zammad-init"] command: ["zammad-init"]
depends_on: depends_on:
- zammad-postgresql - zammad-postgresql
restart: on-failure
user: 0:0 user: 0:0
#deploy:
# restart_policy:
# condition: on-failure
zammad-memcached: zammad-memcached:
command: memcached -m 256M command: memcached -m 256M
image: memcached:1.6.29-alpine image: memcached:1.6.29-alpine
restart: on-failure healthcheck:
test: 'echo "version" | nc -vn -w 1 127.0.0.1 11211'
interval: 30s
timeout: 10s
retries: 10
start_period: 5m
deploy:
restart_policy:
condition: on-failure
app: app:
<<: *zammad-service <<: *zammad-service
@ -118,13 +132,17 @@ services:
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect,${STACK_NAME}-frameOptions" - "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect"
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true" - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true"
- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" - "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}"
- "traefik.http.middlewares.${STACK_NAME}-frameOptions.headers.customFrameOptionsValue=SAMEORIGIN"
- "traefik.http.middlewares.${STACK_NAME}-frameOptions.headers.contentSecurityPolicy=frame-ancestors ${X_FRAME_OPTIONS_ALLOW_FROM}"
- "coop-cloud.${STACK_NAME}.version=1.0.0+6.3.1-95" - "coop-cloud.${STACK_NAME}.version=1.0.0+6.3.1-95"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}" - "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080"]
interval: 30s
timeout: 10s
retries: 10
start_period: 5m
zammad-postgresql: zammad-postgresql:
image: postgres:15.7-alpine image: postgres:15.7-alpine
@ -132,32 +150,66 @@ services:
POSTGRES_DB: zammad_production POSTGRES_DB: zammad_production
POSTGRES_USER: zammad POSTGRES_USER: zammad
POSTGRES_PASSWORD_FILE: /run/secrets/db_password POSTGRES_PASSWORD_FILE: /run/secrets/db_password
restart: on-failure deploy:
restart_policy:
condition: on-failure
volumes: volumes:
- postgresql-data:/var/lib/postgresql/data - postgresql-data:/var/lib/postgresql/data
# Backup Restore # Backup Restore
#- zammad-backup:/var/tmp/zammad:ro #- zammad-backup:/var/tmp/zammad:ro
secrets: secrets:
- db_password - db_password
healthcheck:
test: ["CMD", "pg_isready", "-U", "zammad"]
interval: 30s
timeout: 10s
retries: 10
start_period: 2m
zammad-railsserver: zammad-railsserver:
<<: *zammad-service <<: *zammad-service
command: ["zammad-railsserver"] command: ["zammad-railsserver"]
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000"]
interval: 30s
timeout: 10s
retries: 10
start_period: 5m
zammad-redis: zammad-redis:
image: redis:7.2.5-alpine image: redis:7.2.5-alpine
restart: on-failure deploy:
restart_policy:
condition: on-failure
volumes: volumes:
- redis-data:/data - redis-data:/data
healthcheck:
test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
zammad-scheduler: zammad-scheduler:
<<: *zammad-service <<: *zammad-service
command: ["zammad-scheduler"] command: ["zammad-scheduler"]
healthcheck:
test: 'ps x | grep "[b]ackground-worker.rb"'
interval: 30s
timeout: 10s
retries: 10
start_period: 5m
zammad-websocket: zammad-websocket:
<<: *zammad-service <<: *zammad-service
command: ["zammad-websocket"] command: ["zammad-websocket"]
healthcheck:
test: 'ruby -rsocket -e "s = TCPSocket.new(''localhost'', 6042); s.close"'
interval: 30s
timeout: 10s
retries: 10
start_period: 5m
volumes: volumes:
elasticsearch-data: elasticsearch-data:
@ -165,7 +217,6 @@ volumes:
redis-data: redis-data:
zammad-backup: zammad-backup:
zammad-storage: zammad-storage:
#zammad-data:
networks: networks:
default: default: