중복 지시어 사용 금지
중복 지시어 사용 금지 (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!"]
일반적인 최상위 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"]
더 알아보기
- 빌드 체크 개요: 기타 빌드 체크 규칙을 살펴봐요.
- JSON 인자 권장 (JSONArgsRecommended): ENTRYPOINT/CMD 인자 형식 관련 규칙을 확인해요.