GiitHub Actions로 Docker Image 구축 Push
18300 단어 DockerGitHub ActionsDocker Hubtech
필요조건으로 하다
Circle CI용 기본 이미지 제작https://github.com/taka0125/circleci-ruby을 기반으로 한 글이다.
라벨에서 루비 버전·번들러 버전 같은 것도 정하고 쓸데없는 짓도 하고
시크릿 설정
해당 창고의
Settings
>Secrets
에서 설정합니다.Doke Hub에 로그인할 로그인 정보 및 GiitHub Container Registry에 대한 로그인 정보 설정
https://hub.docker.com/settings/security로 발행된 액세스 토큰
https://github.com/settings/tokens 발행된 GiitHub 액세스 토큰
write:packages
의 권한GiitHub Action 설정
설정
.github/workflows/docker.yml
name: Publish Docker image
on:
push:
tags:
- '*'
jobs:
push_to_registry:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Prepare Build Arg
id: prepare_build_arg
run: |
CURRENT_TAG=${GITHUB_REF#refs/tags/}
echo ::set-output name=CURRENT_TAG::${CURRENT_TAG}
echo ::set-output name=RUBY_VERSION::${CURRENT_TAG%-*}
echo ::set-output name=BUNDLER_VERSION::${CURRENT_TAG##*-}
- name: Log in to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image to Docker Hub
uses: docker/build-push-action@v2
with:
push: true
tags: taka0125/cimage-ruby:${{ steps.prepare_build_arg.outputs.CURRENT_TAG }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
build-args: |
RUBY_VERSION=${{ steps.prepare_build_arg.outputs.RUBY_VERSION }}
BUNDLER_VERSION=${{ steps.prepare_build_arg.outputs.BUNDLER_VERSION }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- name: Build and push Docker image to GitHub Container Registry
uses: docker/build-push-action@v2
with:
push: true
tags: |
ghcr.io/${{ github.repository_owner }}/cimage-ruby:${{ steps.prepare_build_arg.outputs.CURRENT_TAG }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
build-args: |
RUBY_VERSION=${{ steps.prepare_build_arg.outputs.RUBY_VERSION }}
BUNDLER_VERSION=${{ steps.prepare_build_arg.outputs.BUNDLER_VERSION }}
- name: Move cache
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
Docker Hub용 설정
- name: Log in to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push Docker image to Docker Hub
uses: docker/build-push-action@v2
with:
push: true
tags: taka0125/cimage-ruby:${{ steps.prepare_build_arg.outputs.CURRENT_TAG }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
build-args: |
RUBY_VERSION=${{ steps.prepare_build_arg.outputs.RUBY_VERSION }}
BUNDLER_VERSION=${{ steps.prepare_build_arg.outputs.BUNDLER_VERSION }
이 섹션은 Docker Hub에 대한 설정입니다.GiitHub Contaainer Registry용 설정
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
- name: Build and push Docker image to GitHub Container Registry
uses: docker/build-push-action@v2
with:
push: true
tags: |
ghcr.io/${{ github.repository_owner }}/cimage-ruby:${{ steps.prepare_build_arg.outputs.CURRENT_TAG }}
labels: |
org.opencontainers.image.source=${{ github.event.repository.clone_url }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
build-args: |
RUBY_VERSION=${{ steps.prepare_build_arg.outputs.RUBY_VERSION }}
BUNDLER_VERSION=${{ steps.prepare_build_arg.outputs.BUNDLER_VERSION }}
이 섹션은 GiitHub Contaainer Registry 설정에 사용됩니다.Docker Hub과 다를 게 없습니다.
제출,Push,라벨 붙이기
3.0.0-node-2.3.4
레이블cimage/ruby:3.0.0-node
를 바탕으로bundler2.3.4
의 이미지를 추가하여 완성합니다.Docker Hubhttps://hub.docker.com/repository/docker/taka0125/cimage-ruby
GiitHub Contaainer Registry는 https://github.com/taka0125/circleci-ruby/pkgs/container/cimage-ruby
GiitHub Contaainer Registry 측은 애초 이미지를 Push한 뒤 이미지를 Public으로 만들어 창고를 링크하거나 수동으로 설정했다.
이것도 GiitHub Actions로 하면 되는데...
Reference
이 문제에 관하여(GiitHub Actions로 Docker Image 구축 Push), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/taka0125/articles/1448c21a0ca66e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)