Dockerfileでcatとfor-loopを使用する方法

Dockerfileでcatとfor-loopを使用する方法

これを行うシェルスクリプトがありますが、Dockerfileでこれを実行したいと思います。これを行う方法を知っている人はいますか?コマンドを実行できますが、sedforループには運がありません。

org="$(cat org-template.yml)"

for i in {1..10}
do
   temp=$org
   temp="${temp/ENDPOINT/$endpoint}"
   temp="${temp/AUTH_TOKEN/$access_token}"
   temp="${temp/LABEL_TOKEN/$i}"
   final_template="${final_template}\n${temp}"
done

final_template="${final_template//
/\\n}"

sed "s#ORGANIZATIONREQUESTS#${final_template}#g" ./performance-tests.yml > /tmp//performance-tests.yml

ベストアンサー1

この種の問題に対する一般的な解決策は、Dockerfileと一緒にシェルスクリプトを配置し、指示を使用してそれらをコンテナにCOPYコピーしてからRUNコンテナにコピーすることです。

唯一の選択肢は、スクリプト全体を適切にエスケープされた引数として渡すことです。それでは読書が良くありません。とにかくコンテナにbash -c 入れる必要があります。org-template.ymlしたがって、正直に言うと、これら2つのファイルをコンテナにコピーするのが最も簡単でメンテナンスが簡単なソリューションです。

また、YAMLに関する事項は次のとおりです。 YAML を処理するには、シェル交換を使用するよりも適切な yaml ツールを使用することをお勧めします。sedユーティリティはyqより安全で、後で破損しません。

おすすめ記事