From c866ded962a53278d1500a66520cfe539a26f2a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=8B=A0=ED=96=89?= <72925577+LeeShinHaeng@users.noreply.github.com> Date: Mon, 18 Nov 2024 22:20:30 +0900 Subject: [PATCH] =?UTF-8?q?chore/#100=20Github=20Actions,=20Docker?= =?UTF-8?q?=EB=A5=BC=20=EC=9D=B4=EC=9A=A9=ED=95=9C=20CD=20(#102)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: Dockerfile 및 CD 설정 추가 * chore: gitignore에 docker-compose 추가 * fix: actions 중복 제거 * refactor: 도커 이미지 태깅 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * refactor: 수동 트리거로 변경 * refactor: 일부 네이밍 수정 --------- Co-authored-by: 이한음 Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> Co-authored-by: LeeHanEum --- .github/workflows/dev-build-deploy.yml | 61 ++++++++++++++++++++++++++ .gitignore | 3 ++ Dockerfile | 12 +++++ 3 files changed, 76 insertions(+) create mode 100644 .github/workflows/dev-build-deploy.yml create mode 100644 Dockerfile diff --git a/.github/workflows/dev-build-deploy.yml b/.github/workflows/dev-build-deploy.yml new file mode 100644 index 00000000..43a64065 --- /dev/null +++ b/.github/workflows/dev-build-deploy.yml @@ -0,0 +1,61 @@ +name: Build and Deploy to Dev Server + +on: + workflow_dispatch: + +jobs: + build-docker-image: + runs-on: ubuntu-latest + steps: + - name: get repo from github + uses: actions/checkout@v3 + + # JDK setting + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + + # gradle 빌드 + - name: Setup Gradle + run: chmod +x gradlew + + - name: Build with Gradle Wrapper + run: ./gradlew clean build -p aics-api -x test + + # DockerHub 로그인 + - name: Docker login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_PASSWORD }} + + # Docker 이미지 빌드 + - name: Docker image build + env: + IMAGE_TAG: ${{ github.sha }} + run: | + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:$IMAGE_TAG . + docker tag ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:$IMAGE_TAG ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:latest + + # Docker Hub 이미지 푸시 + - name: docker Hub push + run: | + docker push ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:$IMAGE_TAG + docker push ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:latest + + deploy-to-dev: + runs-on: ubuntu-latest + needs: build-docker-image + steps: + - name: Deploy to dev + uses: appleboy/ssh-action@v1.1.0 + with: + host: ${{ secrets.SERVER_HOST }} + username: ${{ secrets.SERVER_USERNAME }} + password: ${{ secrets.SERVER_PASSWORD }} + port: ${{ secrets.SERVER_PORT }} + script: | + sudo docker-compose pull ${{ secrets.DOCKERHUB_USERNAME }}/aics-api:latest + sudo docker-compose up -d \ No newline at end of file diff --git a/.gitignore b/.gitignore index c2065bc2..4012a0aa 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,6 @@ out/ ### VS Code ### .vscode/ + +### Docker ### +docker-compose.yml \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..5dd3f335 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +# Dockerfile +# Java 17 사용 +FROM openjdk:17-jdk-slim + +# 작업 디렉토리 설정 +WORKDIR /app + +# 빌드된 JAR 파일을 이미지에 복사 +COPY aics-api/build/libs/*.jar app.jar + +# 실행 +ENTRYPOINT ["java", "-jar", "app.jar"]