Je suis en train d'écrire un Dockerfile. Existe-t-il un moyen de faire des commentaires dans ce fichier?
Est-ce que Docker a une option de commentaire qui prend le reste d'une ligne et l'ignore?
Je suis en train d'écrire un Dockerfile. Existe-t-il un moyen de faire des commentaires dans ce fichier?
Est-ce que Docker a une option de commentaire qui prend le reste d'une ligne et l'ignore?
Vous pouvez utiliser #
au début d'une ligne pour commencer un commentaire (les espaces blancs avant #
sont autorisés) :
# faire des trucs
RUN apt-get update \
# installer quelques paquets
&& apt-get install -y cron
Les #
au milieu d'une chaîne sont passés à la commande elle-même, par exemple :
RUN echo 'nous exécutons quelques # de choses cool'
Donc la réponse à la deuxième question, "Est-ce que Docker a une option de commentaire qui prend le reste d'une ligne et l'ignore?", est non ? "Docker traite les lignes commençant par # comme un commentaire"
Pouvez-vous mettre à jour votre réponse et la rendre plus complète/complète? Par exemple, en répondant à la deuxième question.
Comme d'autres l'ont mentionné, les commentaires sont référencés avec un #
et sont documentés ici. Cependant, contrairement à certains langages, le #
doit être placé au début de la ligne. S'ils apparaissent au milieu de la ligne, ils sont interprétés comme un argument et peuvent entraîner un comportement inattendu.
# Ceci est un commentaire
COPY test_dir target_dir # Ceci n'est pas un commentaire, c'est un argument pour COPY
RUN echo hello world # Ceci est un argument pour RUN mais le shell peut l'ignorer
Il convient également de noter que des directives du parseur ont récemment été ajoutées au fichier Dockerfile et ont la même syntaxe qu'un commentaire. Elles doivent apparaître en haut du fichier, avant tout autre commentaire ou commande. À l'origine, cette directive a été ajoutée pour changer le caractère d'échappement afin de supporter Windows :
# escape=`
FROM microsoft/nanoserver
COPY testfile.txt c:\
RUN dir c:\
La première ligne, bien qu'elle semble être un commentaire, est en fait une directive du parseur pour changer le caractère d'échappement en un backtick afin que les commandes COPY
et RUN
puissent utiliser le backslash dans le chemin. Une directive du parseur est également utilisée avec BuildKit pour changer le parseur frontal avec une ligne syntax
. Consultez la syntaxe expérimentale pour plus de détails sur son utilisation en pratique.
Avec une commande sur plusieurs lignes, les lignes commentées sont ignorées, mais vous devez commenter chaque ligne individuellement :
$ 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
+1 pour avoir mentionné "doit être au début de la ligne". Et en ce qui concerne la continuation de ligne? Si une ligne de commentaire se termine par \, la ligne suivante sera-t-elle également un commentaire? En d'autres termes, si une commande multi-lignes devait être mise en commentaire, toutes les lignes devraient-elles commencer par #
ou seulement la première? Une expérience suggère que c'est la première option. Cette réponse pourrait être mise à jour pour inclure cela également (ce qui la rendrait encore plus formidable).
@PeterMortensen Le commentaire est nécessaire sur chaque ligne, docker ignore complètement tout jusqu'au saut de ligne. Ce qui m'intéresse, c'est que la commande multi-ligne peut s'étendre sur les commentaires.
Utilisez la syntaxe #
pour les commentaires
De: https://docs.docker.com/engine/reference/builder/#format
# Mon commentaire ici
RUN echo 'nous exécutons des choses cool'
@AlexanderMills Oui, selon la documentation que j'ai liée, les commentaires en ligne sont valides ADD . $foo # ADD . /bar
@AlexanderMills notez cependant que le changement du commentaire à la fin de la ligne forcera docker à relancer cette ligne lors de la construction de docker, car la "ligne a changé". Cela peut être utile et/ou ennuyeux.
Les commentaires Dockerfile commencent par #
, tout comme Python. kstaken a de bons exemples:
# Installer une version plus récente de MongoDB que celle incluse dans les dépôts Ubuntu par défaut.
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"]
Oui, mais contrairement à Python, le reste de la ligne n'est pas ignoré avec une commande au début de la ligne? Vous voudrez peut-être mettre à jour votre réponse.
Docker traite les lignes qui commencent par
#
comme un commentaire, sauf si la ligne est une directive d'analyseur valide. Un#
ailleurs dans une ligne est traité comme un argument.exemple de code:
# cette ligne est un commentaire RUN echo 'nous exécutons certains # de choses cool'
Sortie:
nous exécutons certains # de choses cool
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Je constate que si une couche est mise en cache, la commenter n'a aucun effet : Docker continue de construire les couches commentées si elles sont déjà mises en cache.