web-dev-qa-db-ja.com

HEALTHCHECK:Dockerfileとdocker-compose.yml

DockerComposeファイルとDockerSwarmを使用してサービスをデプロイしています。 Dockerfile内にヘルスチェックを配置することに違いがあるのか​​、それともdocker-compose.ymlに配置する方が良いのか疑問に思いました。

利用可能なすべてのドキュメントを読んだように感じますが、何も見つかりませんでした。

docker-compose.yml

healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:8081/ping"]
    interval: 30s
    timeout: 10s

Dockerfile

HEALTHCHECK --interval=30s --timeout=10s CMD curl -f http://localhost:8081/ping
18
kev

Dockerfileにヘルスチェックを追加すると、イメージのヘルスチェック部分が作成されるため、レジストリからイメージをプルするすべてのユーザーがデフォルトでヘルスチェックを取得します。

作成ファイルは通常、実行する実際のDockerイメージよりも共有されません。 dockercomposeヘルスチェックを使用すると、イメージを作成していないが、リモートレジストリからイメージをプルしているユーザーのイメージのヘルスチェックを追加/上書きできます。プルされたイメージにデフォルトでヘルスチェックがない状況に適しています。

あなたの場合、イメージを作成しているので、dockerfileにヘルスチェックを追加する方が理にかなっています。

19
yamenk