중복 지시어 사용 금지

중복 지시어 사용 금지 (MultipleInstructionsDisallowed)

빌드 체크 규칙 중 하나로, 같은 스테이지에서 CMD, HEALTHCHECK, ENTRYPOINT 지시어를 여러 번 쓴 경우를 알려줘요. 이미지는 이 세 지시어를 각각 하나만 가질 수 있고, 여러 번 쓰면 마지막 것만 사용되기 때문이에요.

출처: 문서

본문

Dockerfile에 CMD, HEALTHCHECK, ENTRYPOINT 지시어가 여러 개 있으면 마지막 하나만 사용돼요. 이미지는 CMD, HEALTHCHECK, ENTRYPOINT를 각각 하나만 가질 수 있어요.

출력 메시지

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

예시

❌ 나쁜 예: 중복된 지시어가 있어요.

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

일반적인 최상위 CMDHEALTHCHECK 지시어용 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"]

더 알아보기