github action을 활용하여 Docker 자동배포하기
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 메뉴에 아래와 같이 표시된다.