web-dev-qa-db-fra.com

Comment écrire des commandes dans plusieurs lignes dans Dockerfile tout en préservant les nouvelles lignes?

Je veux écrire la commande RUN suivante dans le fichier Docker. Mais docker ne préserve pas les nouvelles lignes.

RUN echo "[repo] \
name            = YUM Repository \
baseurl         = https://example.com/packages/ \
enabled         = 1 \
gpgcheck        = 0" > /etc/yum.repos.d/Repo.repoxyz

Je sais que \ à la fin de chaque ligne échappe à la nouvelle ligne. Mais, y a-t-il moyen de pouvoir écrire plusieurs lignes en préservant la nouvelle ligne?

33
Venkata Jaswanth

Commencez votre commande avec $', terminez-la avec ' et utilisez \n\ pour les nouvelles lignes, comme ceci:

RUN echo $'[repo] \n\
name            = YUM Repository \n\
baseurl         = https://example.com/packages/ \n\
enabled         = 1 \n\
gpgcheck        = 0' > /etc/yum.repos.d/Repo.repoxyz
58
Daniel Zolnai

J'ai utilisé printf. Écrire tout le texte sur une ligne en utilisant "\ n".

En cours d'exécution:

RUN printf 'example \ntext \nhere' >> example.txt

inserts:

example
text
here

dans example.txt

20
CTodea

Vous pouvez utiliser:

RUN echo "\
[repo] \n\
name            = YUM Repository \n\
baseurl         = https://example.com/packages/ \n\
enabled         = 1 \n\
gpgcheck        = 0\
" > /etc/yum.repos.d/Repo.repoxyz

De cette façon, vous aurez un moyen rapide de vérifier le contenu du fichier. Vous devez juste savoir que vous devez terminer chaque ligne avec \ et insérer le \n si nécessaire.

0
Paulo Fidalgo