Server&DevOps/Docker

github action을 활용하여 Docker 자동배포하기

킨글 2024. 9. 8. 17:47

Docker를 통해 자동 배포하는 방법을 알아보겠다. 

 

github repository에 Dockerfile 작성한다.

# 베이스 이미지 설정
FROM openjdk:11-jre-slim

# 작업 디렉토리 설정
WORKDIR /app

# JAR 파일 복사
COPY target/*.jar app.jar

# 포트 설정 (예: 8080 포트)
EXPOSE 8080

# 애플리케이션 실행
CMD ["java", "-jar", "app.jar"]

. github repository에 .github/workflows 폴더 생성 후 docker-publish.yml 파일 생성한다.

yourAccount와 yourRepository 부분만 수정하면 된다. 

name: Build and Publish Docker Image

on:
  push:
    branches:
      - main  # main 브랜치에 푸시할 때 실행

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up JDK
        uses: actions/setup-java@v2
        with:
          java-version: '11'  # JDK 버전 설정
          distribution: 'adopt'

      - name: Make gradlew executable
        run: chmod +x ./gradlew 

      - name: Build with Gradle(without tests)
        run: ./gradlew clean build -x test
        working-directory: ./  # 루트 디렉토리로 설정

      - name: Log in to Docker Hub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }} #DOCKER_USERNAME으로 변수처리
          password: ${{ secrets.DOCKER_TOKEN }} #DOCKER_TOKEN으로 변수처리 

      - name: Build Docker image
        run: |
          docker build -t yourAccount/yourRepository:latest . #본인의 계정과 저장소로 변경

      - name: Push Docker image
        run: |
          docker push yourAccount/yourRepository:latest #본인의 계정과 저장소로 변경

 

작성이 되면 구조는 아래와 같을 것이다. 

 

github의 repository에 들어와서 Setting > Secrets and variables 내에 Actions 메뉴로 이동한다. 

(https://github.com/yourAccount/yourRepository/settings/secrets/actions)

그리고 나서 New repository secret 버튼을 클릭하여 DOCKER_TOKEN과 DOCKER_USERNAME을 추가해준다. 

 

yourAccount 대신에 Docker 계정을 작성해준다. 

 

이제 DOCKER_TOKEN을 추가해준다. 

DOCKER의 TOKEN을 발급 받기 위해서는 docker 허브로 이동한다. 

 

Docker 허브로 이동하여 우측 상단의 본인의 프로필을 누른후 Account settings > Personal access tokens 로 이동한다. 

 

[Generate new token] 버튼을 클릭한다. 

 

입력 란을 입력 후에 [Generate] 버튼을 클릭한다. 

Access token description - 토큰 설명

Access permissions - 권한

이제 위에서 하던 것과 같이 github로 돌아가서 DOCKER_TOKEN을 추가해준다. 

 

이제 설정이 완료되었다. github의 main브랜치에 push를 하게 되면 Actions 메뉴에 아래와 같이 표시된다.