diff --git a/.github/workflows/deploy.yml b/.github/workflows/backend-cd.yml similarity index 82% rename from .github/workflows/deploy.yml rename to .github/workflows/backend-cd.yml index 2ce5999b..e6f00bb1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/backend-cd.yml @@ -1,4 +1,4 @@ -name: deploy +name: backend-cd on: push: paths: @@ -61,7 +61,7 @@ jobs: - name: set lower case owner name run: | echo "OWNER_LC=${OWNER,,}" >> ${GITHUB_ENV} - + - name: 빌드 앤 푸시 uses: docker/build-push-action@v3 @@ -71,12 +71,18 @@ jobs: tags: | ghcr.io/${{ env.OWNER_LC }}/${{ env.DOCKER_IMAGE_NAME }}:${{ needs.makeTagAndRelease.outputs.tag_name }}, ghcr.io/${{ env.OWNER_LC }}/${{ env.DOCKER_IMAGE_NAME }}:latest - - + + deploy: runs-on: ubuntu-latest needs: [ buildImageAndPush ] + env: + OWNER: ${{ github.repository_owner }} steps: + - name: set lower case owner name + run: | + echo "OWNER_LC=${OWNER,,}" >> ${GITHUB_ENV} + - name: AWS SSM Send-Command uses: peterkimzz/aws-ssm-send-command@master id: ssm @@ -88,7 +94,18 @@ jobs: working-directory: / comment: Deploy command: | + # 0. env 변수 확인 + echo "OWNER_LC = ${{ env.OWNER_LC }}" + + # 1. 최신 이미지 pull docker pull ghcr.io/${{ env.OWNER_LC }}/catfe-backend:latest + + # 2. 기존 컨테이너 종료 및 제거 docker stop catfe-backend 2>/dev/null docker rm catfe-backend 2>/dev/null - docker run -d --name catfe-backend -p 8080:8080 ghcr.io/${{ env.OWNER_LC }}/catfe-backend:latest \ No newline at end of file + + # 3. 새로운 컨테이너 실행 + docker run -d --name catfe-backend -p 8080:8080 ghcr.io/${{ env.OWNER_LC }}/catfe-backend:latest + + # 4. dangling 이미지 삭제 + docker rmi $(docker images -f "dangling=true" -q) \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1d0b1312..9fe0ab55 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ out/ db_dev.mv.db db_dev.trace.db .env +.env.* ### Terraform ### /infra/terraform/.terraform diff --git a/Dockerfile b/Dockerfile index cbe50e62..e0f2ceee 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,16 +8,14 @@ WORKDIR /app COPY build.gradle.kts . COPY settings.gradle.kts . +# 종속성 설치 RUN gradle dependencies --no-daemon # 소스코드 복사 COPY src src -# .env 복사 -COPY .env .env - # 애플리케이션 빌드 -RUN gradle build --no-daemon +RUN gradle build --no-daemon -x test # 두 번째 스테이지 : 실행 스테이지 FROM container-registry.oracle.com/graalvm/jdk:21 @@ -26,7 +24,9 @@ WORKDIR /app # 첫 번째 스테이지에서 빌드된 JAR 파일 복사 COPY --from=builder /app/build/libs/*.jar app.jar -COPY --from=builder /app/.env .env + +# 빌드 컨텍스트의 .env(backend-cd 작업에서 빌드된 .env)를 컨테이너 안으로 복사 +COPY .env .env # 실행할 JAR 파일 지정 ENTRYPOINT ["java", "-Dspring.profiles.active=prod", "-jar", "app.jar"] \ No newline at end of file