Cum se face un comentariu într-un fișier Dockerfile? (Programare, Docker, Dockerfile)

kpie a intrebat.

Scriu un fișier Dockerfile. Există o modalitate de a face comentarii în acest fișier?

Docker are o opțiune de comentariu care ia restul unei linii și o ignoră?

7 răspunsuri
Ranjeet

Puteți utiliza # la începutul unei linii pentru a începe un comentariu (spațiile albe înainte de # sunt permise):

# do some stuff
RUN apt-get update 
    # install some packages
    apt-get install -y cron

#‘s în mijlocul unui șir de caractere sunt trecute la comanda propriu-zisă, de exemplu:

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

Comentarii

  • Așadar, răspunsul la a doua întrebare, „Docker are o opțiune de comentariu care ia restul unei linii și o ignoră?”., este nu? Docker tratează liniile care încep cu # ca pe un comentariu. –  > Por Peter Mortensen.
  • Puteți să vă actualizați răspunsul și să îl faceți mai cuprinzător/complet? De exemplu, răspunzând la a doua întrebare. –  > Por Peter Mortensen.
  • Răspunsul lui BMitch completează informații esențiale care lipsesc din acest răspuns. –  > Por Jonathan.
  • link către stackoverflow.com/questions/53564598/… – –  > Por eli.
BMitch

După cum au menționat și alții, comentariile sunt referite cu un # și sunt documentate aici. Cu toate acestea, spre deosebire de unele limbaje, în # trebuie să se afle la începutul liniei. Dacă apar la jumătatea liniei, ele sunt interpretate ca un argument și pot avea ca rezultat un comportament neașteptat.

# 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

De asemenea, trebuie remarcat faptul că directivele parser au fost adăugate recent în Dockerfile, care au aceeași sintaxă ca un comentariu. Acestea trebuie să apară în partea de sus a fișierului, înaintea oricăror alte comentarii sau comenzi. Inițial, această directivă a fost adăugată pentru modificarea caracterului de scăpare pentru a susține Windows:

# escape=`

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

Prima linie, deși pare a fi un comentariu, este o directivă de parser pentru a schimba caracterul de scăpare în backtick, astfel încât COPY și RUN să poată folosi bara inversă din calea de acces. O directivă parser este, de asemenea, utilizată cu BuildKit pentru a schimba parserul frontal cu un caracter syntax linie. A se vedea directiva sintaxa experimentală pentru mai multe detalii despre modul în care aceasta este utilizată în practică.

În cazul unei comenzi cu mai multe linii, liniile comentate sunt ignorate, dar trebuie să comentați fiecare linie în parte:

$ 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

Comentarii

  • +1 pentru menționarea „trebuie să fie la începutul liniei”. Cum rămâne cu continuarea liniei? Dacă o linie de comentariu se termină cu , următoarea linie va fi, de asemenea, un comentariu? Cu alte cuvinte, dacă o comandă pe mai multe linii ar trebui să fie comentată, toate liniile ar trebui să înceapă cu # sau doar prima linie? Un experiment sugerează că este prima variantă. Acest răspuns ar putea fi actualizat pentru a acoperi și acest aspect (făcându-l și mai grozav). –  > Por Peter Mortensen.
  • @PeterMortensen Comentariul este necesar pe fiecare linie, docker ignoră complet tot ceea ce este până la linia de linie. Ceea ce mi se pare interesant este că comanda pe mai multe linii se poate întinde peste comentarii. –  > Por BMitch.
edhurtig

Utilizați comanda # pentru comentarii

De la: https://docs.docker.com/engine/reference/builder/#format

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

Comentarii

  • dar putem comenta pe aceeași linie cu RUN, COPY, MAINTAINER, etc.? –  > Por Alexander Mills.
  • @AlexanderMills Da, conform documentației la care am făcut referire, comentariile în linie sunt valabile. ADD . $foo # ADD . /bar –  > Por edhurtig.
  • @AlexanderMills rețineți totuși că modificarea comentariului de la sfârșitul liniei va face ca docker să ruleze din nou acea linie la o construcție docker, deoarece „linia s-a schimbat”. Acest lucru poate fi util și/sau enervant –  > Por Phylliida.
  • Foarte bună observație, poate că docker ar trebui să ignore comentariul lol –  > Por Alexander Mills.
  • Aceasta este atât o caracteristică, cât și un bug, cred că Docker o va considera o caracteristică, și cred că are sens de fapt – -.  > Por Alexander Mills.
DhruvPathak

Comentariile fișierelor Dockerfile încep cu „#”, la fel ca în Python. iată un exemplu bun (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"] 

Comentarii

  • Da, dar spre deosebire de Python nu și restul liniei cu o comandă la începutul liniei? Este posibil să doriți să vă actualizați răspunsul. –  > Por Peter Mortensen.
  • doar o notă: MAINTAINER este depreciat, acum se recomandă să folosiți etichete: LABEL maintainer="[email protected]" –  > Por Alexei Martianov.
Prateek Naik

Format

Iată care este formatul Dockerfile:

Putem folosi # în scopul comentariilor#Comment de exemplu

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

Din fișierul de mai sus, atunci când construim docker-ul, acesta sare peste prima linie și trece la linia următoare, deoarece am comentat-o folosind #

Amin Shojaei

Docker tratează liniile care încep cu # ca un comentariu, cu excepția cazului în care linia este o directivă valabilă a analizatorului. A # oriunde altundeva în cadrul unei linii este tratat ca un argument.

Exemplu de cod:

# this line is a comment

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

Ieșire:

we are running some # of cool things

Ankur Kothari
# this is comment
this isn't comment

este modalitatea de a face acest lucru. Îl puteți plasa oriunde în linie, iar tot ceea ce vine mai târziu va fi ignorat