MultipleInstructionsDisallowed

出力

Multiple CMD instructions should not be used in the same stage because only the last one will be used

(訳: ステージ内に CMD 命令を使用しても最後の一つしか評価されません)

内容説明

Dockerfile 内に CMDHEALTHCHECKENTRYPOINT という命令を複数記述したとしても、最後のものしか評価されません。 一つのイメージに記述する CMDHEALTHCHECKENTRYPOINTは一つだけです。

❌ 不可: 命令が重複しています。

FROM alpine
ENTRYPOINT ["echo", "Hello, Norway!"]
ENTRYPOINT ["echo", "Hello, Sweden!"]
# "Hello, Sweden!" だけが出力されます。

✅ 可: ENTRYPOINT 命令は一つだけです。

FROM alpine
ENTRYPOINT ["echo", "Hello, Norway!\nHello, Sweden!"]

通常のトップレベルの CMD とは別に、HEALTHCHECK 命令内に別レベル CMD を記述することは可能です。

✅ 可: トップレベルの CMD 命令は一つだけです。

FROM python:alpine
RUN apk add curl
HEALTHCHECK --interval=1s --timeout=3s \
  CMD ["curl", "-f", "http://localhost:8080"]
CMD ["python", "-m", "http.server", "8080"]