2016-11-04 3 views
2

Docker Imageを実行しているときに引数を与える必要があります。0〜3の数値になります。Dockerイメージを複数回実行するときに異なる引数を渡す

Dockerfileは以下があります。

WORKDIR "mydir/build" 
CMD ./maker oneapp > /artifacts/oneapp_$1.log ; ./maker twoapp > /artifacts/twoapp_$1.log ; ./maker -j13 threeapp > /artifacts/threeapp_$1.log 

私は同じドッカーイメージを複数回実行していることになるので、私は、ログは、必要に応じて、_0、_1、_2、_3を付加/アーティファクトに保存する必要があります。

私はこれをDockerファイルに保存しようとしましたが、この完全な行をdockerの実行中に引数として渡したくありません。

ENTRYPOINT ["/bin/bash"]

./maker oneapp > /artifacts/oneapp_$1.log ; ./maker twoapp > /artifacts/twoapp_$1.log ; ./maker -j13 threeapp > /artifacts/threeapp_$1.log

これは可能ですか?私が欲しいことをするためにDockerfileで何を修正する必要がありますか?

答えて

3

パラメータをENVとして挿入するだけです。

ENV in your Dockerfileを宣言します。

ENV suffix 0 
./maker oneapp > /artifacts/oneapp_${suffix}.log 

The environment variables set using ENV will persist when a container is run from the resulting image.
You can view the values using docker inspect , and change them using docker run --env <key>=<value> .

そのように、あなたはそのENV on docker runを宣言し、実行中のコンテナで、その値の恩恵を受けることができます。例えば、あなたの場合は

the operator can set any environment variable in the container by using one or more -e flags, even overriding those mentioned above, or already defined by the developer with a Dockerfile ENV:

、:

docker run -e suffix=2 <image_name> 
+0

これは素敵な&エレガントなアプローチです。 – Rao

+0

DockerfileではENVカウント0とCMD ./maker oneapp> /artifacts/oneapp_${suffix}.logを追加しましたが、このエラーが表示されました:root @ onl-dev:/ data/sept15/target-docker#docker run -it target -e count = 0 docker:デーモンからのエラー応答:ociランタイムエラー:exec: "-e":実行可能ファイルが$ PATHに見つかりません。 –

+0

@Sweetyはい: 'docker run'は実行するイメージ名が必要です(そこからコンテナを作成してください)。コマンドにイメージ名がありません。 – VonC

関連する問題