GitHub Actions로 레지스트리 간 이미지 복사하기
GitHub Actions로 레지스트리 간 이미지 복사하기 (Copy image between registries with GitHub Actions)
빌드한 이미지를 다른 레지스트리로 복사하는 예시예요. docker buildx imagetools create 명령을 사용해요.
출처: 문서
본문
다음 워크플로는 Docker Hub에서 빌드·push하고, imagetools create로 같은 매니페스트를 GHCR(GitHub Container Registry)로 복사해요:
name: ci
on:
push:
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v4
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4
- name: Build and push
uses: docker/build-push-action@v7
with:
platforms: linux/amd64,linux/arm64
push: true
tags: |
user/app:latest
user/app:1.0.0
- name: Push image to GHCR
run: |
docker buildx imagetools create \
--tag ghcr.io/user/app:latest \
--tag ghcr.io/user/app:1.0.0 \
user/app:latest
docker buildx imagetools create는 이미지를 다시 빌드하지 않고 기존 매니페스트를 참조해 다른 레지스트리/태그에 옮겨주기 때문에, 멀티플랫폼 매니페스트를 그대로 복사할 때 아주 유용해요.