これを行うシェルスクリプトがありますが、Dockerfileでこれを実行したいと思います。これを行う方法を知っている人はいますか?コマンドを実行できますが、sed
forループには運がありません。
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
より安全で、後で破損しません。