2016-10-18 83 views
3

我正在創建一個需要創建特定bash腳本的Docker容器。我用我的Dockerfile內以下運行一句話:從Dockerfile創建bash腳本評論

RUN printf "#!/bin/bash\n \ 
# This is a bash comment inside the script\ 
ls -l" > /home/myuser/script.sh 

它運作良好,但生成的腳本就是:

#!/bin/bash 
ls -l 

所以,bash的評論是從最後的文件丟失。我懷疑是因爲Docker認爲該行是Dockerfile註釋,但由於它被包含在雙引號內,我認爲很明顯並非如此。

當然,我可以通過在一行中包含完整腳本或將其放置在外部文件中來解決問題,但我認爲應該可以在多行中包含bash註釋,沒有此類引用的字符串的問題。任何解決方法?我嘗試過所有的逃跑,沒有成功。

回答

3

你說得對,Docker將其解釋爲一個Dockerfile註釋而不是字符串內的註釋有點奇怪。作爲一種變通方法,我得到了以下工作

FROM ubuntu:latest 

RUN printf "#!/bin/bash \ 
\n# This is a bash comment inside the script \ 
\nls -l\n" > /script.sh 

RUN cat /script.sh 

結果在這個輸出

Step 3 : RUN cat /script.sh 
---> Running in afc19e228656 
#!/bin/bash 
# This is a bash comment inside the script 
ls -l 

如果移動\n它仍然會產生正確的輸出註釋行的開頭,但不再將是行作爲Dockerfile註釋行。


假設我找到了right command parsing code,而且我正確讀它,多克爾條試圖解析線,看它是否有任何命令之前註釋掉。

+0

完美無瑕!好的趕上! – jesjimher