MultipleInstructionsDisallowed
目录
输出
Multiple CMD instructions should not be used in the same stage because only the last one will be used
描述
如果你的 Dockerfile 中包含多个 CMD
、HEALTHCHECK
或 ENTRYPOINT
指令,则只有最后一个指令会被使用。一个镜像只能有一个 CMD
、HEALTHCHECK
和 ENTRYPOINT
指令。
示例
❌ 不好:重复的指令。
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
指令,以及一个用于 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"]