2015-10-30 12 views
17

Ich möchte den folgenden RUN-Befehl in der Dockerfile schreiben. Aber Docker behält die neuen Zeilen nicht bei.Wie schreibe ich Befehle mit mehreren Zeilen in Dockerfile, während die neuen Zeilen beibehalten werden?

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

Ich weiß, dass \ am Ende jeder Zeile die neue Zeile entkommt. Aber gibt es eine Möglichkeit, dass ich mehrere Zeilen schreiben kann, die die neue Zeile behalten.

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 
+0

Sind Sie nicht * nix-Plattform? Weil das für mich unter Linux funktioniert. – user

+0

@user, ich habe Linux benutzt. –

Antwort

25

mit $', beenden Sie ihn mit ' und verwenden \n\ für neue Zeilen, wie dies Beginnen Sie Ihren Befehl. Schreiben Sie den gesamten Text in einer Zeile mit "\ n".

Executing:

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

Einsätze:

example 
text 
here 

in example.txt

+1

Es funktioniert! Vielen Dank! –

+0

Ist die $ Syntax nach echo ein Feature von Dockerfile? Weil ich in der Dokumentation nichts darüber finden konnte. –

+4

Es ist Bash-Syntax. Siehe diese Frage für weitere Informationen: http://StackOverflow.com/a/11966402/1395437 –

Verwandte Themen