Docker ファイルで「ADD」コマンドを使用して、Docker のビルド コンテキスト外のファイルを含めるにはどうすればよいですか?
Docker ドキュメントより:
パスはビルドのコンテキスト内にある必要があります。docker ビルドの最初のステップはコンテキスト ディレクトリ (およびサブディレクトリ) を docker デーモンに送信することなので、ADD ../something/something は実行できません。
この問題に関して、Docker に対応するためだけにプロジェクト全体を再構築したくはありません。すべての Docker ファイルを同じサブディレクトリに保存したいのです。
また、Docker はまだ (そして今後も) シンボリック リンクをサポートしていないようです。Dockerfile ADD コマンドはホスト #1676 上のシンボリック リンクに従いません。
私が考えられる唯一の他の方法は、ビルド前のステップを追加して、ファイルを Docker ビルド コンテキストにコピーすること (およびそれらのファイルを無視するようにバージョン コントロールを構成すること) です。これよりも優れた回避策はありますか?
ベストアンサー1
この問題を回避する最善の方法は、-f を使用して、ビルド コンテキストとは独立して Dockerfile を指定することです。
たとえば、このコマンドは、ADD コマンドに現在のディレクトリ内のすべてのものへのアクセスを許可します。
docker build -f docker-files/Dockerfile .
更新: Dockerでは、ビルドコンテキストの外側にDockerfileを置くことができるようになりました(18.03.0-ceで修正)。そのため、次のようなこともできます。
docker build -f ../Dockerfile .