본문 바로가기

DevOps/Git

Github Action과 Docker hub

반응형

GitAction을 이용하여 Docker image를 Docker hub에 push해보자

 

# 도커 계정 생성과 관련한 부분은 생략하도록 한다.

 

1. 작성된 Dockerfile을 이용해 이미지를 빌드할 수 있게 workflow 작성

 

Actions 탭에 New workflow 또는 Create workflow 를 클릭하면 여러 예시들을 확인할 수 있다.

New workflow에서 docker를 검색한 결과

예시들을 참고로 작성한 workflow

파일 형식: YAML

name: Publish Docker image

on:
  release:
    types: [published]

jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v3
      
      - name: Log in to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
      
      - name: Extract metadata (tags, labels) for Docker
        id: meta
        uses: docker/metadata-action@v4
        with:
          images: useranme/user_repo
      
      - name: Build and push Docker image
        uses: docker/build-push-action@v3
        with:
          context: .
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}

yaml 문서로 작성법에 관한 설명은 레퍼런스를 통해 확인할 수 있다.

 

아이디와 비밀번호 같은 민감한 정보를 YAML 코드에 입력해서 commit을 하면 더 이상 그 정보는 쓸 수 없기 때문에 환경변수(DOCKER_NAME, DOCKER_PASSWORD) 를 이용하여 관리할 수 있다.

  • Github에서는 이러한 환경변수를 안전하게 보관할 수 있는 기능을 제공한다.
  • Settings  -> Secrets 

작성을 완료하고 GitAction을 실행하려고하면 작동하지 않는 것을 확인할 수 있다.

이유는 위 코드의 published가 release 활동이 발생할때 워크플로를 실행하기 때문이다.

 

 

다시 레포로 돌아가 오른쪽 사이드바의 Relase > Create a new release를 눌러 새로운 release를 발행한다.

           - 첫 생성이므로 tag는 v1.0.0으로 하고 title과 notes는 자유롭게 입력한다.

 

이제 진짜 모든 작성이 완료됐다면 초록불이 반기고 있을 것이다!

 

반응형