Dockerfile에서 주석을 작성하려면 어떻게합니까?


406

Dockerfile을 작성 중입니다. 이 파일에 댓글을 달 수있는 방법이 있습니까?

Docker에는 나머지 줄을 가져 와서 무시하는 주석 옵션이 있습니까?

답변:


515

당신은 할 수 라인을 언급 라인의 시작으로 #을 사용합니다 .

# Everything on this line is a comment

참고 : # 은 주석의 시작 부분 에서만 사용할 수 있습니다 .


9
따라서 두 번째 질문에 대한 답은 "Docker는 나머지 행을 취하고 무시하는 주석 옵션이 있습니까?" 아니지? " Docker는 #으로 시작하는 줄을 주석으로 취급합니다 . "
Peter Mortensen

1
답변을 업데이트하고보다 포괄적 / 완전하게 만들 수 있습니까? 예를 들어 두 번째 질문에 답하십시오.
Peter Mortensen

8
BMitch의 답변 은이 답변에서 빠진 중요한 정보를 채 웁니다.
Jonathan

99

다른 사람들이 언급했듯이 주석은 a를 참조하고 여기#문서화되어 있습니다 . 그러나 일부 언어와 달리 #줄의 시작 부분에 있어야합니다. 그것들이 라인을 통해 도중에 발생하면, 그것들은 인수로 해석되어 예기치 않은 동작을 초래할 수 있습니다.

# This is a comment

COPY test_dir target_dir # This is not a comment, it is an argument to COPY

RUN echo hello world # This is an argument to RUN but the shell may ignore it

또한 구문 분석기 지시문 은 최근 주석과 동일한 구문을 가진 Dockerfile에 추가되었습니다. 다른 주석이나 명령 앞에 파일 상단에 표시되어야합니다. 원래이 지시문은 Windows를 지원하도록 이스케이프 문자를 변경하기 위해 추가되었습니다.

# escape=`

FROM microsoft/nanoserver
COPY testfile.txt c:\
RUN dir c:\

첫 번째 줄은 주석으로 보이지만, COPYRUN명령이 경로에서 백 슬래시를 사용할 수 있도록 이스케이프 문자를 백틱으로 변경하는 파서 지시문 입니다. 구문 분석기 지시문은 BuildKit 과 함께 사용되어 프론트 엔드 구문 분석기를 syntax라인 으로 변경합니다 . 이것이 실제로 어떻게 사용되는지에 대한 자세한 내용 은 실험 구문 을 참조하십시오.

여러 줄 명령을 사용하면 주석 처리 된 줄은 무시되지만 모든 줄을 개별적으로 주석 처리해야합니다.

$ cat Dockerfile
FROM busybox:latest
RUN echo first command \
# && echo second command disabled \
 && echo third command

$ docker build .
Sending build context to Docker daemon  23.04kB
Step 1/2 : FROM busybox:latest
 ---> 59788edf1f3e
Step 2/2 : RUN echo first command  && echo third command
 ---> Running in b1177e7b563d
first command
third command
Removing intermediate container b1177e7b563d
 ---> 5442cfe321ac
Successfully built 5442cfe321ac

3
+1 언급에 대해 "라인의 시작 부분에 있어야합니다" . 줄 연속은 어떻습니까? 주석 행이 \로 끝나면 다음 행도 주석입니까? 즉, 여러 줄 명령을 주석 처리해야한다면 모든 줄 #이 첫 번째 줄로 시작해야 합니까 아니면 첫 번째 줄만으로 시작해야 합니까? 실험은 그것이 전자라는 것을 암시합니다. 이 답변을 업데이트하여 더 멋지게 만들 수 있습니다.
Peter Mortensen

1
@PeterMortensen 주석은 각 줄에 필요하며 docker는 줄 바꿈까지 모든 것을 완전히 무시합니다. 흥미로운 점은 여러 줄 명령이 여러 주석에 걸쳐있을 수 있다는 것입니다.
BMitch

19

#주석 구문 사용

보낸 사람 : https://docs.docker.com/engine/reference/builder/#format

# My comment here
RUN echo 'we are running some cool things'

2
RUN, COPY, MAINTAINER 등과 같은 줄에 주석을 달 수 있습니까?
Alexander Mills

@AlexanderMills 네 인라인 코멘트에 링크 된 문서에 따르면 그렇습니다 ADD . $foo # ADD . /bar
edhurtig

2
그러나 @AlexanderMills는 줄 끝에서 주석을 변경하면 "줄이 변경 ​​되었기 때문에 docker 빌드에서 docker가 해당 줄을 다시 실행하게됩니다. 유용하고 성
가실

아주 좋은 지적, 아마도 고정 표시기 주석 롤 무시해야
알렉산더 밀스

그것은 기능이자 버그입니다. Docker
Alexander Mills

4

Dockerfile 주석은 Python과 마찬가지로 '#'으로 시작합니다. 다음은 좋은 예입니다 ( kstaken / dockerfile-examples ).

# Install a more-up-to date version of MongoDB than what is included in the default Ubuntu repositories.

FROM ubuntu
MAINTAINER Kimbro Staken

RUN apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
RUN echo "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen" | tee -a /etc/apt/sources.list.d/10gen.list
RUN apt-get update
RUN apt-get -y install apt-utils
RUN apt-get -y install mongodb-10gen

#RUN echo "" >> /etc/mongodb.conf

CMD ["/usr/bin/mongod", "--config", "/etc/mongodb.conf"] 

예, 그러나 파이썬과 달리 줄의 시작 부분에 명령이있는 줄의 나머지 부분이 아닌가? 답변을 업데이트 할 수 있습니다.
Peter Mortensen

참고 사항 : MAINTAINER 더 이상 사용되지 않으며 레이블을 사용하는 것이 좋습니다.LABEL maintainer="foo@abc.com"
Alexei Martianov

2

체재

형식은 다음과 같습니다. Dockerfile:

예를 들어 #코멘트 목적으로 사용할 수 있습니다#Comment

#FROM microsoft/aspnetcore
FROM microsoft/dotnet
COPY /publish /app
WORKDIR /app
ENTRYPOINT ["dotnet", "WebApp.dll"]

도커를 만들 때 위의 파일에서 첫 번째 줄을 건너 뛰고 다음 줄을 사용하여 주석을 달았으므로 다음 줄로갑니다. #


2

Docker는 라인이 유효한 파서 지시문이 아닌 경우 # 으로 시작하는 라인을 주석으로 처리합니다 . 줄의 다른 곳에서 # 표시는 인수로 취급됩니다.

예:

# this line is a comment

RUN echo 'we are running some # of cool things'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.