1. ホーム
  2. docker

[解決済み】Dockerのビルドコンテキスト外のファイルをインクルードする方法とは?

2022-02-18 02:15:02

質問

Dockerのビルドコンテキスト外のファイルをDockerファイル内の "ADD "コマンドでインクルードするにはどうしたらいいですか?

Dockerのドキュメントより。

パスは、ビルドのコンテキスト内にある必要があります。 なぜなら、ドッカービルドの最初のステップは コンテキストディレクトリ(およびサブディレクトリ)をドッカーデーモンに送信します。

この件に関して、Dockerに対応するためだけにプロジェクト全体を再構築することは避けたいと考えています。Dockerのファイルはすべて同じサブディレクトリに置いておきたいのです。

また、Dockerはシンボリックリンクをまだサポートしていないようです(今後もサポートしない可能性があります)。 Dockerfile ADD コマンドは、ホスト #1676 のシンボリックリンクに従わない。

他に考えられるのは、Dockerのビルドコンテキストにファイルをコピーするビルド前のステップを含めることです(そして、これらのファイルを無視するようにバージョン管理を設定します)。それよりも良い回避策はあるのでしょうか?

解決方法は?

これを回避する最善の方法は、ビルドコンテキストとは別にDockerfileを-fで指定することです。

例えば、このコマンドを実行すると、ADDコマンドはカレントディレクトリにあるすべてのものにアクセスできるようになります。

docker build -f docker-files/Dockerfile .

更新情報 : Docker は、ビルドコンテキストの外側に Dockerfile を持つことができるようになりました (18.03.0-ce で修正)。そのため、以下のようなことも可能です。

docker build -f ../Dockerfile .