MultipleInstructionsDisallowed#

Output#

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

Description#

If you have multiple CMD, HEALTHCHECK, or ENTRYPOINT instructions in your Dockerfile, only the last occurrence is used. An image can only ever have one CMD, HEALTHCHECK, and ENTRYPOINT.

Examples#

❌ Bad: Duplicate instructions.

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

✅ Good: only one ENTRYPOINT instruction.

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

You can have both a regular, top-level CMD and a separate CMD for a HEALTHCHECK instruction.

✅ Good: only one top-level CMD instruction.

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