2017-08-24 37 views
0

私はホストマウントを使用せずに別のコンテナにファイルを公開したいコンテナを持っています。私DockerfileでDockerでホストをマウントせずに特定のファイルを共有するには?

私は、必要なファイルをコピーした後、ボリュームとして/etc/nginx/ディレクトリを宣言:

COPY ./src/frontend/config/nginx.conf /etc/nginx/nginx.conf 
COPY ./src/frontend/config/sites-available/default /etc/nginx/sites-enabled/default 
VOLUME ["/etc/nginx/"] 

をしかし、全体のディレクトリがボリュームとして機能するため/etc/nginx/の元の内容は、私の内容によって隠されていますボリューム:

dk run --volumes-from other_container -it --rm nginx:1.12.1 /bin/bash 
> ls /etc/nginx 
> nginx.conf sites-enabled 

これは私が避けたいものです。しかし、Dockerは、既存のファイルをボリュームとして公開することを本当にサポートしていないようです。私は上記のように、ボリュームを使用している場合

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

私は、次のエラーメッセージが表示されます。

cannot mount volume over existing file, file exists /var/lib/docker/overlay2/b557a0d1ef5026f581f7ee69321de854d8f77b935c0442458f26cada855e5bf2/merged/etc/nginx/nginx.conf 

は、それが取り付けホストを使用せずに、この問題を解決することは可能ですか?

+0

他の場所にマウントすると、シンボリックリンクが挿入されますか? –

+0

これを別のフォルダにシンボリックリンクし、そのフォルダを名前コンテナにボリュームマウントすることができます。もう一方のコンテナには、この名前付きコンテナを提供します –

答えて

1

Dockerボリュームがマウントされると、マウントポイント上の以前の内容はすべて非表示になります。

このため、ボリュームは別のディレクトリ、たとえば/ etc/nginx/extra /その他の場所にマウントする必要があります。他のすべての設定ファイルは、適切なディレクトリからインクルードするために適合させる必要があります。

関連する問題