BuildKitと高度なビルド機能
Docker BuildKitで高度なビルド:マルチプラットフォームイメージ、リモートキャッシング、ビルドシークレット、SSHフォワーディング、buildxコマンド。
Build
詳細な説明
Docker BuildKit
BuildKitはDockerの次世代ビルドエンジンです。Docker 23.0以降デフォルトになっています。
BuildKitの有効化
# 最新のDockerではデフォルトですが、明示的に指定可能:
DOCKER_BUILDKIT=1 docker build .
マルチプラットフォームビルド
複数のCPUアーキテクチャ向けにイメージをビルド:
# ビルダーを作成して使用
docker buildx create --use --name mybuilder
docker buildx inspect --bootstrap
# 複数プラットフォーム向けにビルド
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t my-app:v1.0 \
--push .
ビルドシークレット
イメージレイヤーに漏洩させずにシークレットを渡す:
# Dockerfile
RUN --mount=type=secret,id=npmrc,target=/root/.npmrc npm ci
docker build --secret id=npmrc,src=$HOME/.npmrc .
SSHフォワーディング
ビルド中のプライベートリポジトリアクセスのためにSSHエージェントを転送:
RUN --mount=type=ssh git clone git@github.com:private/repo.git
docker build --ssh default .
キャッシュ管理
# レジストリをキャッシュソースとして使用
docker buildx build \
--cache-from type=registry,ref=myregistry/my-app:cache \
--cache-to type=registry,ref=myregistry/my-app:cache,mode=max \
-t my-app:v1.0 .
# ローカルキャッシュディレクトリを使用
docker buildx build \
--cache-from type=local,src=/tmp/buildcache \
--cache-to type=local,dest=/tmp/buildcache \
-t my-app:v1.0 .
ビルド引数
docker build \
--build-arg NODE_VERSION=20 \
--build-arg BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ) \
-t my-app:v1.0 .
ユースケース
ARMとx86デプロイメント向けのマルチアーキテクチャイメージのビルド、レジストリベースキャッシングによるCI/CDビルド時間の最適化、ビルド中のNPMトークンやSSHキーの安全な受け渡し、複雑なビルドパイプラインの管理。