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"]