特定の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
そのため、bashコメントが最終ファイルから欠落しています。その理由は、Dockerがその行をDockerfileコメントであると想定しているためだと思いますが、二重引用符で囲まれているため、そうではないことは明らかだと思います。
もちろん、スクリプト全体を1行に含めるか、外部ファイルに配置するだけで問題を解決できますが、このような問題が発生することなく、複数行の引用符で囲まれた文字列内にbashコメントを含めることは可能だと思います。回避策はありますか?私はあらゆる種類の脱出を試みましたが、成功しませんでした。
そうです、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コメント行として扱われなくなります。
正しいコマンド解析コードを見つけ、それを正しく読んでいると仮定すると、Dockerは、行を解析してコマンドが含まれているかどうかを確認する前に、コメントを取り除きます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加