(docker-compose) コンテナサービス起動時にヘルスチェックをする
Redis を用いた例
redis-cli から自コンテナへ ping を送信することで応答可否によるヘルスチェックが可能となり、redis サービスが優先的に正常起動してからアプリケーションコンテナが起動します。
以下の値ではこのようになっています。
interval (遅延): 1秒
timeout (タイムアウト): 3秒
retries (再試行可能回数): 30回
code:yaml
version: "3.8"
services:
redis:
container_name: redis
image: redis:7-alpine
volumes:
- type: bind
source: ./redis
target: /data
healthcheck:
test: "CMD", "redis-cli", "ping"
interval: 1s
timeout: 3s
retries: 30
networks:
- internal
app:
container_name: app
image: app
volumes:
- type: bind
source: ./
target: /app
environment:
HOGE: FOO
depends_on:
redis:
condition: service_healthy
networks:
- default
- internal
networks:
internal: