4

3 つの異なるイメージ (現時点では 1 つ) をビルドできる Dockerfile を作成したいと考えています。これらのイメージは、構成ファイルのみが異なります。

やってみた:

  • 3 つの異なる docker ファイルを作成する (dockerfile には Dockerfile という名前を付け、コンテキスト ルートに配置する必要があるため、機能しません
  • docker build コマンドにパラメーターを渡す方法を見つける - 見つかりませんでした
  • ONBUILD コマンドを使用して、1 つのメイン ファイルと、特定の conf ファイルをイメージ内の同じディレクトリにコピーする 3 つの特定のファイルを作成しました (最初のポイントと同じ理由で機能しません)。
  • 標準入力からdockerファイルを渡す - コンテキストがないため機能しません(そのため、ADD/COPYコマンドを使用できません)

アイデアが尽きたと言わざるを得ません:/その状況をどのように処理しますか. 私の意見では、それは共通の問題であるべきです。

4

3 に答える 3

5

3 つの構成ファイルすべてを Dockerfile にコピーしてからdocker run -e config=file1(または file2 または file3)、構成環境変数の値を使用して、必要な構成ファイルを取得してください。ドキュメント http://docs.docker.com/reference/commandlineを確認してください。 /cli/#run

--env-file=[] Read in a line delimited file of environment variablesコマンドのを使用することもできますdocker run

環境変数が show で利用可能であることを確認でき docker run -it -e mytag=abc123 ubuntu:latest env | grep mytagます mytag=abc123

于 2015-01-27T11:36:23.520 に答える
0

3 つの異なるイメージが必要な場合は、3 つの異なる Dockerfile を使用します。ネーミングの問題は厄介ですが、ファイルをコピーして呼び出しを行うだけのヘルパー スクリプトを作成できますdocker build

cp Dockerfile-cfg1 Dockerfile
docker build -t "cfg1" .
cp Dockerfile-cfg2 Dockerfile
docker build -t "cfg2" .

ただし、@ user2915097 が示唆するように、より良い解決策は、おそらく単一のイメージを持ち、実行時に構成を選択することです。これは、複数のイメージを管理および維持するためのオーバーヘッドが少ないことを意味します。

于 2015-01-27T11:47:06.520 に答える