私は複数のビルド引数を使用してDockerイメージを構築していて、同じ方法でdocker build
にファイルを渡すことが可能かどうか疑問に思っていました。--env-file
をdocker run
にポーズできます。 envファイルは自動的にdocker run
によって解析され、変数はコンテナで利用可能になります。build-argの--env-fileに相当しますか?
同じようにビルド引数のファイルを指定することはできますか?
私は複数のビルド引数を使用してDockerイメージを構築していて、同じ方法でdocker build
にファイルを渡すことが可能かどうか疑問に思っていました。--env-file
をdocker run
にポーズできます。 envファイルは自動的にdocker run
によって解析され、変数はコンテナで利用可能になります。build-argの--env-fileに相当しますか?
同じようにビルド引数のファイルを指定することはできますか?
少なくとも今のところ、そのようなオプションはありません。しかし、あなたはあまりにも多くのビルド引数を持っており、それをファイルに保存したい場合は、以下のように、あなたがそれをアーカイブすることができます。
保存buildargs.sh
に次のシェル、それが実行可能にし、あなたのPATH
にそれを置く:
#!/bin/bash
awk '{ sub ("\\\\$", " "); printf " --build-arg %s", $0 } END { print "" }' [email protected]
のようなargfile
であなたのイメージをビルドします。
docker build $(buildargs.sh argfile) -t your_image .
このコードは、スペースや特殊文字を含むビルドのargのために安全である:
for arg in buildarg1 buildarg2 ; do opts+=(--build-arg "$arg") ; done
...
docker run ... "${opts[@]}"
ちょうどようにあなたのビルドのargのは、エスケープとbuildarg1を代用して。
これは、 "ドッキングウィンドウのビルド" を返すように思える正確に1引数が必要です。 'ドッキングウィンドウのビルド$(./ buildargs.shのtest_args)-t test_build -f Dockerfile .' 私test_argsは'ちょうど です - -build-argをPORT = 4000' EDIT: ' PORT = 4000 STUFF =ハロー FOO = BAR ':用事それらは線によって、および--build、引数なしで分離されなければなりません –