Docker Buildx Bake GitHub Actions 사용법 완벽 가이드! CI/CD 자동 빌드 자동화하기

Docker 이미지를 운영 환경에 배포할 때 매번 직접 빌드하고 Push하는 방식은 시간이 많이 걸리고 관리가 어렵습니다.

예:

코드 변경

수동 Docker Build 실행

이미지 생성

Registry Push

서버 배포

프로젝트 규모가 커질수록 이러한 반복 작업은 비효율적입니다.

이러한 문제를 해결하기 위해 많은 개발 환경에서는 CI/CD 자동화를 사용합니다.

GitHub Actions와 Docker Buildx Bake를 함께 사용하면 코드가 변경될 때마다 자동으로 Docker 이미지를 빌드하고 Registry에 Push할 수 있습니다.

예:

name: Docker Build

on:
  push:
    branches:
      - main

jobs:

  build:

    runs-on: ubuntu-latest

    steps:

      - uses: actions/checkout@v4

      - uses: docker/setup-buildx-action@v3

      - run: docker buildx bake --push

코드가 Push되면 자동으로 Docker 이미지가 생성됩니다.

이번 글에서는 Docker Buildx Bake와 GitHub Actions 연동 방법, Buildx 설정, Cache 적용, Registry Push, Multi-platform 빌드 자동화까지 자세히 알아보겠습니다.

Docker Buildx Bake GitHub Actions란 무엇인가?

Docker Buildx Bake GitHub Actions는 GitHub Actions 환경에서 Docker Buildx Bake를 자동 실행하는 CI/CD 구성 방법입니다.

기본 구조:

Git Push

GitHub Actions 실행

Docker Buildx Bake 실행

Docker Image 생성

Registry Push

자동화된 Docker 이미지 빌드 환경을 만들 수 있습니다.

Docker Buildx Bake와 GitHub Actions를 사용하는 이유

수동 빌드 방식:

docker buildx bake --push

문제:

  • 직접 실행 필요
  • 빌드 환경 차이 발생
  • 배포 과정 반복
  • 실수 가능성 증가

GitHub Actions 사용:

코드 변경

↓

자동 Build

↓

자동 Push

↓

자동 배포

장점:

  • 반복 작업 제거
  • 동일한 빌드 환경 유지
  • 빠른 배포 가능
  • CI/CD 자동화

GitHub Actions 기본 Docker Buildx 설정

Workflow 파일 위치:

.github/

└── workflows/

    └── docker-build.yml

기본 설정:

name: Docker Build

on:

  push:

    branches:

      - main


jobs:

  docker:

    runs-on: ubuntu-latest

    steps:

      - name: Checkout

        uses: actions/checkout@v4


      - name: Setup Buildx

        uses: docker/setup-buildx-action@v3

Buildx 환경을 준비합니다.

Docker Buildx Bake 실행하기

GitHub Actions:

- name: Build Image

  run: |

    docker buildx bake

동작:

docker-bake.hcl 확인

↓

Target 확인

↓

Image Build

기본 Bake 파일을 자동으로 사용합니다.

Docker Buildx Bake Registry Push 설정

운영 환경에서는 이미지를 Registry에 저장해야 합니다.

예:

Docker Hub Login:

- name: Login Docker Hub

  uses: docker/login-action@v3

  with:

    username: ${{ secrets.DOCKER_USERNAME }}

    password: ${{ secrets.DOCKER_PASSWORD }}

Build Push:

- name: Build and Push

  run: |

    docker buildx bake --push

결과:

GitHub Actions

↓

Docker Build

↓

Docker Hub Push

Docker Buildx Bake GitHub Actions Cache 설정

CI 환경에서는 Cache 사용이 중요합니다.

설정:

docker-bake.hcl

target "app" {

  cache-from = [

    "type=gha"

  ]


  cache-to = [

    "type=gha"

  ]

}

GitHub Actions Cache를 활용합니다.

효과:

  • 반복 빌드 속도 향상
  • Runner 초기화 문제 감소
  • CI 비용 절감

Docker Buildx Bake Multi-platform 빌드 자동화

여러 서버 환경을 지원하려면 Multi-platform 빌드가 필요합니다.

docker-bake.hcl:

target "app" {

  platforms = [

    "linux/amd64",

    "linux/arm64"

  ]

}

GitHub Actions:

- name: Build Multi Platform

  run: |

    docker buildx bake --push

결과:

linux/amd64 이미지

+

linux/arm64 이미지

하나의 Image Tag로 여러 환경을 지원할 수 있습니다.

Docker Buildx Bake Secret과 GitHub Actions 활용

Private Repository나 API Key가 필요한 경우 Secret을 사용할 수 있습니다.

GitHub Secret:

API_KEY

SSH_KEY

TOKEN

Workflow:

env:

  API_KEY: ${{ secrets.API_KEY }}

Bake:

target "app" {

  secret = [

    "id=api,env=API_KEY"

  ]

}

민감한 정보를 안전하게 전달할 수 있습니다.

Docker Buildx Bake Matrix와 GitHub Actions 활용

여러 환경을 자동 테스트할 수 있습니다.

예:

docker-bake.hcl

target "test" {

  matrix = {

    version = [

      "18",

      "20",

      "22"

    ]

  }

}

GitHub Actions 실행:

- name: Run Matrix Build

  run: |

    docker buildx bake test

여러 버전을 자동으로 테스트할 수 있습니다.

Docker Buildx Bake GitHub Actions 실무 예제

프로젝트 구조:

project/

├── Dockerfile

├── docker-bake.hcl

└── .github/

    └── workflows/

        └── docker.yml

docker.yml:

name: Docker Build


on:

  push:

    branches:

      - main


jobs:

  build:

    runs-on: ubuntu-latest


    steps:

      - name: Checkout

        uses: actions/checkout@v4


      - name: Setup Buildx

        uses: docker/setup-buildx-action@v3


      - name: Login Registry

        uses: docker/login-action@v3


      - name: Build

        run: |

          docker buildx bake --push

코드 Push만으로 Docker 이미지가 자동 생성됩니다.

Docker Buildx Bake GitHub Actions와 배포 자동화

전체 흐름:

개발자가 코드 Push

↓

GitHub Actions 실행

↓

Docker Buildx Bake 실행

↓

Registry Push

↓

서버 Pull

↓

서비스 업데이트

활용:

  • Kubernetes 배포
  • Docker Compose 배포
  • Cloud 서버 운영

Linux 서버 문제 해결

기존에는 코드를 수정할 때마다 직접 서버에서 Docker Build를 실행했습니다.

기존:

docker buildx bake --push

문제:

  • 반복 작업 발생
  • 빌드 환경 차이
  • 배포 시간 증가

GitHub Actions 적용:

- name: Build

  run: |

    docker buildx bake --push

결과:

  • 코드 Push 자동 Build
  • 자동 Image Push
  • 동일한 환경에서 빌드

배포 과정을 자동화할 수 있었습니다.

Docker Buildx Bake GitHub Actions 사용 시 주의사항

첫 번째는 Registry 인증 정보를 GitHub Secret으로 관리해야 합니다.

두 번째는 Cache 설정을 함께 사용하는 것이 좋습니다.

세 번째는 운영 Branch와 개발 Branch Workflow를 분리하는 것이 좋습니다.

네 번째는 Build 결과와 로그를 확인하는 과정이 필요합니다.

Best Practice

Docker Buildx Bake GitHub Actions 활용 방법:

  • docker-bake.hcl 중앙 관리
  • GitHub Secret 사용
  • Buildx Cache 적용
  • Registry Push 자동화
  • Multi-platform 빌드 활용
  • Production Workflow 분리

자주 묻는 질문

Docker Buildx Bake를 GitHub Actions에서 사용할 수 있나요?

가능합니다.

Workflow 파일에서 Docker Buildx Bake 명령을 실행하면 됩니다.

Docker 이미지 Push도 자동화할 수 있나요?

가능합니다.

Registry Login 후 --push 옵션을 사용하면 됩니다.

Cache를 사용할 수 있나요?

가능합니다.

GitHub Actions Cache(type=gha)를 활용할 수 있습니다.

여러 플랫폼 이미지를 만들 수 있나요?

가능합니다.

linux/amd64와 linux/arm64 Multi-platform 빌드를 자동화할 수 있습니다.

마무리

Docker Buildx Bake와 GitHub Actions를 함께 사용하면 Docker 이미지 빌드와 배포 과정을 완전히 자동화할 수 있습니다.

코드 변경부터 이미지 생성, Registry Push까지 자동으로 처리할 수 있어 반복적인 작업을 줄이고 안정적인 CI/CD 환경을 구축할 수 있습니다.

특히 여러 서비스와 여러 플랫폼을 운영하는 프로젝트에서는 Docker Buildx Bake, Cache, Secret, Matrix 기능을 GitHub Actions와 함께 활용하면 효율적인 자동화 시스템을 만들 수 있습니다.

댓글 남기기