2016-10-18 16 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