Je suis en train d'écrire un Dockerfile. Y a-t-il un moyen de mettre des commentaires dans ce fichier?
Docker a-t-il une option de commentaire qui prend le reste d'une ligne et l'ignore?
Je suis en train d'écrire un Dockerfile. Y a-t-il un moyen de mettre des commentaires dans ce fichier?
Docker a-t-il 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 avant #
sont autorisés) :
# faire quelque chose
RUN apt-get update \
# installer quelques packages
&& apt-get install -y cron
Les #
au milieu d'une chaîne de caractères sont passés à la commande elle-même, par exemple :
RUN echo 'nous exécutons quelques # de choses cool'
Ainsi, la réponse à la deuxième question, "Docker a-t-il une option de commentaire qui prend le reste d'une ligne et l'ignore?", est non? "Docker traite les lignes commençant par # comme des commentaires".
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 à certaines langues, le #
doit être au début de la ligne. S'ils se trouvent 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 à COPY
RUN echo hello world # Ceci est un argument à RUN mais le shell peut l'ignorer
Il convient également de noter que des directives du parseur ont récemment été ajoutées au Dockerfile qui 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 prendre en charge Windows :
# escape=`
FROM microsoft/nanoserver
COPY testfile.txt c:\
RUN dir c:\
La première ligne, bien qu'elle semble être un commentaire, est 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 la manière dont elle est utilisée en pratique.
Avec une commande multi-ligne, 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 pour 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 sur plusieurs lignes devait être commentée, toutes les lignes devraient-elles commencer par #
ou seulement la première ligne ? Une expérience suggère que c'est le premier cas. Cette réponse pourrait être mise à jour pour inclure cela également (ce qui la rendrait encore meilleure).
@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 à travers 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 les documents que j'ai liés, les commentaires en ligne sont valides ADD . $foo # ADD . /bar
@AlexanderMills note cependant que changer le commentaire à la fin de la ligne causera à Docker de relancer cette ligne lors d'une construction Docker, car la "ligne a changé". Cela peut être utile et/ou ennuyeux.
Les commentaires dans les Dockerfile commencent par #
, tout comme en 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"]
Docker traite les lignes qui commencent par
#
comme un commentaire, sauf si la ligne est une directive d'analyseur valide. Un marqueur#
n'importe où ailleurs dans une ligne est traité comme un argument.code exemple :
# cette ligne est un commentaire RUN echo 'nous exécutons certaines # de choses cool'
Résultat :
nous exécutons certaines # 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 mettre en commentaire n'a aucun effet : Docker continue de construire les couches mises en commentaire si elles sont déjà mises en cache.