Dockerfile'da nasıl yorum yapabilirim?


407

Dockerfile yazıyorum. Bu dosyaya yorum yapmanın bir yolu var mı?

Docker'ın bir satırın geri kalanını alan ve yok sayan bir yorum seçeneği var mı?

Yanıtlar:


517

Sen edebilirsiniz hattını yorum yapmak hattının başlarken # kullanın .

# Everything on this line is a comment

Not: # yorum olarak yalnızca satırın başında kullanılabilir .


9
Yani ikinci sorunun cevabı, "Docker'ın bir satırın geri kalanını alıp yok sayan bir yorum seçeneği var mı?" , değil mi? " Docker, # ile başlayan satırları yorum olarak ele alır " .
Peter Mortensen

1
Cevabınızı güncelleyebilir ve daha kapsamlı / eksiksiz hale getirebilir misiniz? Örneğin, ikinci soruyu cevaplamak.
Peter Mortensen

8
BMitch'in yanıtı , bu cevapta eksik olan kritik bilgileri doldurur.
Jonathan

99

Diğerlerinin de belirttiği gibi, yorumlara a ile atıfta bulunulur #ve burada belgelenir . Ancak, bazı dillerden farklı #olarak, satırın başında olmalıdır. Çizgi boyunca kısmen ortaya çıkarlarsa, bir argüman olarak yorumlanırlar ve beklenmedik davranışlara neden olabilirler.

# 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

Ayrıca, ayrıştırıcı yönergelerinin Dockerfile'a bir yorumla aynı sözdizimine sahip olan son zamanlarda eklendiğine dikkat edilmelidir . Diğer yorum veya komutlardan önce dosyanın üstünde görünmeleri gerekir. Başlangıçta, bu yönerge Windows'u desteklemek için çıkış karakterini değiştirmek için eklendi:

# escape=`

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

İlk satır, bir yorum gibi görünse de, COPYve RUNkomutlarının yoldaki ters eğik çizgiyi kullanabilmesi için çıkış karakterini bir backtick olarak değiştirmek için bir ayrıştırıcı direktifidir . Ön uç ayrıştırıcıyı bir syntaxsatırla değiştirmek için BuildKit ile bir ayrıştırıcı yönergesi de kullanılır . Deneysel söz dizimine bakın uygulamada nasıl kullanıldığı hakkında daha fazla ayrıntı için .

Çok satırlı bir komutla, açıklanan satırlar yoksayılır, ancak her satırı ayrı ayrı yorumlamanız gerekir:

$ 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, "satırın başında olmalı" ifadesini kullanmak için kullanılır . Hattın devamı ne olacak? Bir yorum satırı \ ile bitiyorsa, sonraki satır da bir yorum olur mu? Başka bir deyişle, çok satırlı bir komut yorumlanırsa, tüm satırların başlaması #mı yoksa yalnızca ilk satır mı başlaması gerekir ? Bir deney bunun birincisi olduğunu gösteriyor. Bu cevap da bunu kapsayacak şekilde güncellenebilir (daha da harika hale getirir).
Peter Mortensen

1
@PeterMortensen Yorum her satırda gereklidir, liman işçisi hat beslemesine kadar her şeyi tamamen görmezden gelir. Benim için ilginç olan, çok satırlı komutun yorumlara yayılabilmesidir.
BMitch

19

Kullan #Yorumlar sözdizimini

Gönderen: https://docs.docker.com/engine/reference/builder/#format

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

2
ancak RUN, COPY, MAINTAINER, vb. ile aynı satırda yorum yapabilir miyiz?
Alexander Mills

@AlexanderMills Evet, satır içi yorumlara bağladığım dokümanlara göre geçerlidir ADD . $foo # ADD . /bar
edhurtig

2
@AlexanderMills, satırın sonundaki açıklamanın değiştirilmesinin, docker'ın "satır değiştiğinden" bir docker yapısında bu satırı yeniden çalıştırmasına neden olacağını unutmayın. Bu yararlı ve / veya sinir bozucu olabilir
Phylliida

Çok iyi bir nokta, belki docker yorum lol göz ardı etmelidir
Alexander Mills

Bu hem bir özellik hem de bir hata, sanırım Docker bunu bir özellik olarak görecek ve bence bu gerçekten mantıklı
Alexander Mills

4

Dockerfile yorumları tıpkı Python gibi '#' ile başlar. İşte iyi bir örnek ( kstaken / dockerfile-örnekler ):

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

Evet, ama Python'dan farklı olarak, satırın başında komut bulunan satırın geri kalanı değil mi? Cevabınızı güncellemek isteyebilirsiniz.
Peter Mortensen

sadece bir not: MAINTAINER kullanımdan kaldırıldı, şimdi etiket kullanmanız tavsiye ediliyor:LABEL maintainer="foo@abc.com"
Alexei Martianov

3

Docker, geçerli bir ayrıştırıcı yönergesi olmadığı sürece # ile başlayan satırları yorum olarak ele alır . Satırın başka herhangi bir yerindeki # işareti argüman olarak değerlendirilir.

örnek kod:

# this line is a comment

RUN echo 'we are running some # of cool things'

Çıktı:

we are running some # of cool things

2

Biçim

İşte biçimi Dockerfile:

#Yorum yapmak amacıyla kullanabiliriz #Commentörneğin

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

Docker'ı inşa ettiğimizde yukarıdaki dosyadan, ilk satırı atlar ve bir sonraki satıra gider, çünkü #

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.