2017-03-20 9 views
1

コンテナの実行中に-vオプション(またはその他)でオーバーライドできるデフォルト設定ファイル(ビルド時にイメージにコピーする)を持つ方法はありますか?コンテナの実行中にオーバーライドできるイメージにデフォルトファイルを格納する方法は?

詳細:

COPY nginx.conf /etc/nginx/nginx.conf 
VOLUME ["/etc/nginx/nginx.conf"] 

私はnginxのは、指定されていない(単一ファイル)のボリュームならば、コピーnginx.confを使用することを望む - のように:

は私がDockerfile内のディレクティブを次ているを想像してみてデフォルトの設定です。常にイメージ内にあります。 そして、ボリュームを指定した場合、コンテナは画像にコピーするのではなく、提供された設定ファイルを使用します。

主なアイデアは、私が上書きできるデフォルトの設定を持つことです。

もちろん、以下の解決策は機能しておらず、エラーが発生します。しかし、あなたは同様の動作を達成する方法を知っているかもしれません?

+0

あなた 'VOLUME'ディレクティブは'それは私には思えるCOPY'を使用してコピーしたものを消去します... – user2915097

+0

いや、ドッキングウィンドウは、イメージビルド中にエラーが発生します: 'ステップ20/25:VOLUMEの/ etc/nginxの/nginx.confは既存のファイル上にボリュームをマウントすることができません。ファイルは存在します。 ' – pro100sanya

+0

もう1つのレイヤーを置いて、nginx.conf /etc/nginx/nginx.confのコピーを行います。 –

答えて

2

DockerfileからVOLUMEの部分を削除するとうまくいくはずです。コンテナを実行すると、既定の構成ファイルを上書きすることができます。あなたのDockerfile中のSO

、ちょうどこれを置く:

COPY nginx.conf /etc/nginx/nginx.conf 

を次に、あなたがあなたの構成の変更でローカルファイル内のコンテナ、マップを実行すると:

docker run -v ./nginx.conf:/etc/nginx/nginx.conf:ro ... 

これは、あなたが提供できるようになりますデフォルトの設定ですが、必要に応じて上書きすることもできます。

関連する問題