2016-10-18 14 views
3

特定のbashスクリプトを作成する必要があるDockerコンテナーを作成しています。これはよく動作しますが、結果のスクリプトはただでDockerfileからbashスクリプトを作成するコメント

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

::私は私のDockerfile内側次RUN文を使用し

#!/bin/bash 
ls -l 

ので、bashのコメントは、最終的なファイルから欠落しています。私はDockerがDockerfileコメントであるとDockerが仮定しているのではないかと思うが、二重引用符で囲まれているので、そうでないことは明らかだと思う。

もちろん、完全なスクリプトを1行に入れるか、外部ファイルに入れるだけで問題を解決できますが、この種の引用符で囲まれていない複数行の中にbashコメントを含めることができるはずです問題の回避策はありますか?私はすべての種類のエスケープを試みましたが、成功しませんでした。

答えて

3

Dockerが文字列の中のコメントではなくDockerfileのコメントとして解釈するのはちょっと変です。回避策として、私はあなたがそれはまだ正しい出力を生成コメント行の先頭に\nを移動しませんが、もはや扱いした場合、この出力

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

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 

結果を動作するように、次の得たこと行はDockerfileのコメント行として表示されます。私はright command parsing codeを見つけた、と私はそれを正しく読んでいると仮定すると、


、ドッカーは、それはそれで任意のコマンドを持っているかどうかを確認するために行を解析しようとする前にコメントを除去します。

+0

これは完璧に機能します!ナイスキャッチ! – jesjimher

関連する問題