2017-04-18 5 views
1

私は複数のビルド引数を使用してDockerイメージを構築していて、同じ方法でdocker buildにファイルを渡すことが可能かどうか疑問に思っていました。--env-filedocker runにポーズできます。 envファイルは自動的にdocker runによって解析され、変数はコンテナで利用可能になります。build-argの--env-fileに相当しますか?

同じようにビルド引数のファイルを指定することはできますか?

答えて

2

少なくとも今のところ、そのようなオプションはありません。しかし、あなたはあまりにも多くのビルド引数を持っており、それをファイルに保存したい場合は、以下のように、あなたがそれをアーカイブすることができます。

  1. 保存buildargs.shに次のシェル、それが実行可能にし、あなたのPATHにそれを置く:

    #!/bin/bash 
    awk '{ sub ("\\\\$", " "); printf " --build-arg %s", $0 } END { print "" }' [email protected] 
    
  2. のようなargfileであなたのイメージをビルドします。

    docker build $(buildargs.sh argfile) -t your_image . 
    
+0

これは、 "ドッキングウィンドウのビルド" を返すように思える正確に1引数が必要です。 'ドッキングウィンドウのビルド$(./ buildargs.shのtest_args)-t test_build -f Dockerfile .' 私test_argsは'ちょうど です - -build-argをPORT = 4000' EDIT: ' PORT = 4000 STUFF =ハロー FOO = BAR ':用事それらは線によって、および--build、引数なしで分離されなければなりません –

0

このコードは、スペースや特殊文字を含むビルドのargのために安全である:

for arg in buildarg1 buildarg2 ; do opts+=(--build-arg "$arg") ; done 

... 

docker run ... "${opts[@]}" 

ちょうどようにあなたのビルドのargのは、エスケープとbuildarg1を代用して。

関連する問題