MultipleInstructionsDisallowed (不允许的多个指令)

输出

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

描述

如果您有多个CMD,HEALTHCHECKENTRYPOINT说明 Dockerfile 时,仅使用最后一个匹配项。一个镜像只能有一个CMD,HEALTHCHECKENTRYPOINT.

例子

❌ 差:重复说明。

FROM alpine
ENTRYPOINT ["echo", "Hello, Norway!"]
ENTRYPOINT ["echo", "Hello, Sweden!"]
# Only "Hello, Sweden!" will be printed

✅ 好:只有一个ENTRYPOINT指令。

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

您可以同时拥有常规的顶级CMD和一个单独的CMD对于HEALTHCHECK指令。

✅ Good:只有一个顶级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"]