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-fromcache-toオプションはDockerレイヤーキャッシュにGitHub Actionsキャッシュを使用し、リビルドを大幅に高速化します。

マルチプラットフォームビルド

マルチアーキテクチャイメージ用にビルドステップにplatforms: linux/amd64,linux/arm64を追加します。x86とARM環境(Apple Silicon、AWS Graviton)の両方をサポートするのに不可欠です。

ユースケース

マイクロサービス、Webアプリケーション、CLIツールのコンテナイメージのビルドと公開。Kubernetes、ECS、または同様のプラットフォームへのコンテナ化されたデプロイメントで継続的デリバリーを実践するチームに不可欠です。

試してみる — GitHub Actions Workflow Builder

フルツールを開く