不允许使用多个指令
目录
输出
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"]