Docker Build コマンド
docker build
コマンドは、DockerfileとビルドコンテキストからDockerイメージを作成する開発者のツールの一つです。この記事では、コマンドの細部、各種オプション、効果的な使用方法について説明します。
基本構文
docker build
コマンドの基本構文は次のとおりです。
$ docker build [OPTIONS] PATH | URL | -
OPTIONS
はオプションフラグで、PATH
はDockerfileとビルドコンテキストが含まれるローカルディレクトリ、URL
はDockerfileが含まれるリモートリポジトリ、-
はビルドコンテキストがSTDIN経由で提供されることを示します。
ビルドコンテキストの指定
ビルドコンテキストはビルドプロセスの重要な部分であり、Dockerfileがその命令を実行するために必要なファイルとディレクトリで構成されています。デフォルトでは、ビルドコンテキストはdocker build
コマンドを実行するカレントディレクトリになります。別のビルドコンテキストを指定するには、パスを引数として指定します。
$ docker build -t my-image:latest /path/to/build/context
イメージのタグ付け
-t
または--tag
フラグを使用して、イメージにわかりやすいタグを割り当てることができます。これはイメージの整理や管理に役立ちます。タグはリポジトリ名:タグ名
の形式に従います。
$ docker build -t my-image:latest .
ビルドキャッシュとレイヤーの再利用
Dockerは、ビルドプロセス中に中間レイヤーをキャッシュして、後続のビルドを最適化して高速化します。キャッシュミスを強制して全てのレイヤーをゼロから構築するには、--no-cache
フラグを使用します。
$ docker build --no-cache -t my-image:latest .
ビルド引数
ビルド引数を使用すると、ビルド時にDockerfileに値を渡すことができます。--build-arg
フラグに引数と値を続けて指定します。
$ docker build --build-arg API_KEY=myapikey -t my-image:latest .
マルチステージビルド
マルチステージビルドは、最終的なイメージに必要なファイルと依存関係だけを含めることで、Dockerイメージを最適化する方法です。マルチステージビルドを利用するには、--target
フラグにターゲットステージを続けて指定します。
$ docker build --target production -t my-image:latest .
ビルドの失敗のデバッグ方法
ビルドが失敗した場合、原因を特定することは困難です。より詳細なビルドの進捗を表示するには、--progress
フラグを使用します。
$ docker build --progress=plain -t my-image:latest .
参考