Dockerイメージのビルドとレジストリへのプッシュ
GitHub Actionsを使用してDockerイメージをビルドし、Docker HubまたはGitHub Container Registryにプッシュ。マルチプラットフォームビルド、タグ戦略、ログインを解説。
Docker
詳細な説明
GitHub ActionsでのDockerビルド&プッシュ
Dockerイメージのビルドとプッシュは、最も一般的なCI/CDタスクの1つです。このワークフローは公式Dockerアクションを使用して、イメージのビルド、タグ付け、コンテナレジストリへのプッシュを行います。
ワークフローYAML
name: Docker Build & Push
on:
push:
branches:
- main
tags:
- 'v*'
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: myuser/myapp:latest
cache-from: type=gha
cache-to: type=gha,mode=max
主要コンポーネント
- Docker Buildx: マルチプラットフォームビルド、ビルドキャッシュ、BuildKit最適化を含む高度なビルド機能を有効にします。
- ログインアクション: リポジトリシークレットを使用してDocker Hubで認証します。GitHub Container Registry(ghcr.io)の場合は
registry: ghcr.ioと${{ secrets.GITHUB_TOKEN }}を使用します。 - GHAキャッシュ:
cache-fromとcache-toオプションはDockerレイヤーキャッシュにGitHub Actionsキャッシュを使用し、リビルドを大幅に高速化します。
マルチプラットフォームビルド
マルチアーキテクチャイメージ用にビルドステップにplatforms: linux/amd64,linux/arm64を追加します。x86とARM環境(Apple Silicon、AWS Graviton)の両方をサポートするのに不可欠です。
ユースケース
マイクロサービス、Webアプリケーション、CLIツールのコンテナイメージのビルドと公開。Kubernetes、ECS、または同様のプラットフォームへのコンテナ化されたデプロイメントで継続的デリバリーを実践するチームに不可欠です。