build context
別名: docker build context / ビルドコンテキスト
docker build の最後の引数で指したディレクトリ(または URL)のこと。Docker クライアントがこの配下を tar 化してデーモンに送り、COPY / ADD の参照元になる。
#docker#build-context#dockerfile#dockerignore#copy
公開:
定義
build context は、docker build の最後に指定したディレクトリ(または URL / stdin)を指す概念。
クライアントがそこを tar アーカイブ化してデーモンに送信し、Dockerfile の COPY / ADD はこのコンテキスト内部の相対パスだけを参照できる。
詳細
docker build -f path/to/Dockerfile . の末尾の . が context。
BuildKit は最初に context を走査し、.dockerignore で除外指定されたファイルはそもそも送信されない。COPY のソースは Dockerfile からの相対ではなく context ルートからの相対 で解決される。../shared のように context 外を指すと forbidden path outside the build context で失敗する。
Git URL や tar 圧縮ファイル URL を context に指定することもできる(公式ドキュメント)。
よくある誤解
- Dockerfile があるディレクトリ基準で COPY が解決される: ならない。
Dockerfile の場所と context の場所は独立で、COPY は context ルート基準で解決される。 .dockerignoreは単に転送量を減らすだけ: 実際には Dockerfile から参照できる範囲そのものを削るため、COPYの解決結果まで変わる。
関連
COPY が失敗する典型例は Dockerfile の COPY でファイルが見つからない、キャッシュ無効化の振る舞いは build cache が invalidate されない を参照。