#1752: Добавить проверки healthcheck в docker-compose.yml
Отредактирована: 56 дней назадСимптомы
Как мне добавить проверки healthcheck и зависимости в docker-compose.yml, чтобы работоспособность контейнеров проверялась автоматически средствами Docker?
Решение
Для систем, установленных после 1 июля 2026 года эти проверки добавляются автоматически, в момент установки Swarmica.
Для систем, установленных ранее, необходимо выполнить следующие действия:
- Войдите на сервер Swarmica с правами
root - Зайдите в папку установки Swarmica, обычно
/root/swarmica/:cd /root/swarmica - Создайте резервную копию
docker-compose.yml:cp docker-compose.yml{,.backup} - Отредактируйте сервис
postgres, добавивhealthcheck:Таким образом, вся секцияhealthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 start_period: 10spostgresбудет выглядеть примерно так:postgres: image: postgres:14.2-bullseye restart: always container_name: swarmica-postgres shm_size: 1gb command: postgres -N 400 -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c track_activity_query_size=16384 -c wal_keep_size=512MB healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] interval: 10s timeout: 5s retries: 5 start_period: 10s volumes: - swarmica_postgres_data:/var/lib/postgresql/data:Z - swarmica_postgres_data_backups:/backups:z - ./pg_hba.conf:/var/lib/postgresql/data/pg_hba.conf env_file: - .env - Отредактируйте сервис
redis, добавивhealthcheck:Таким образом, вся секция должна выглядеть так:healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 5sredis: image: redis:6-bullseye restart: always container_name: swarmica-redis command: redis-server --save 20 1 --loglevel warning --timeout 86400 --maxclients 100000 healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 start_period: 5s - Отредактируйте секцию сервиса
django, изменив разделыdepends_onи добавивhealthcheckвот так:django: ...rest of your config... depends_on: postgres: condition: service_healthy redis: condition: service_healthy healthcheck: test: ["CMD", "python", "-c", "import urllib.request; req = urllib.request.Request('http://127.0.0.1:5000/api/instance', headers={'Host': 'django'}); resp = urllib.request.urlopen(req, timeout=5); exit(0 if 200 <= resp.status < 400 else 1)"] interval: 15s timeout: 5s retries: 10 start_period: 40s ...rest of your config... - Далее, в сервисах
frontend,helpcenter,celeryworker,celerybeat,django-websocket,mcp,telegram,whatsapp_green,vk,max(в тех, которые есть у вас вdocker-compose.yml- в зависимости от настроек системы, у вас могут быть не все из них) измените секциюdepends_onвот так:depends_on: django: condition: service_healthy - Перезапустите сервисы:
docker compose down && docker compose up -d