从Dockerfile创buildbash脚本去掉评论

我正在创build一个需要创build一个特定的bash脚本的Docker容器。 我在Dockerfile中使用下面的RUN语句:

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

它运作良好,但是由此产生的脚本只是:

 #!/bin/bash ls -l 

所以,最后的文件中缺lessbash注释。 我怀疑是因为Docker认为该行是一个Dockerfile注释,但由于它被包含在双引号内,所以我认为很明显情况并非如此。

当然,我可以通过将整个脚本包含在一行中,或者将其放在一个外部文件中来解决这个问题,但是我认为应该可以在多行中引入bash注释,而不会出现这种问题。 任何解决方法? 我尝试了所有的逃跑,没有成功。

你是对的,Docker将其解释为一个Dockerfile注释而不是string内的注释有点奇怪。 作为一个解决方法,我得到了以下工作

 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注释行。


假设我find了正确的命令parsing代码 ,并且正在正确地读取它,Docker在尝试parsing该行之前删除注释,以查看它是否有任何命令。

Interesting Posts