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.