From 86fa5f7a7b5dc4e8b84f23834aba38165c1b05e1 Mon Sep 17 00:00:00 2001 From: wonseokyoon Date: Mon, 18 Aug 2025 18:47:25 +0900 Subject: [PATCH 01/14] refactor: docker-compose-prod.yml --- backend/docker-compose-prod.yml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/backend/docker-compose-prod.yml b/backend/docker-compose-prod.yml index 127e43c..dcf939e 100644 --- a/backend/docker-compose-prod.yml +++ b/backend/docker-compose-prod.yml @@ -1,4 +1,22 @@ services: + # Spring Boot 애플리케이션 서비스 추가 + app-prod: + image: ghcr.io/wonseokyoon/catch-course:latest + container_name: app-prod + restart: always + depends_on: + - mysql-db-prod + - redis-prod + - kafka-prod + ports: + - "8080:8080" + networks: + - prod-network + environment: + - SPRING_PROFILES_ACTIVE=prod + - DB_USERNAME=${DB_USERNAME} + - DB_PASSWORD=${DB_PASSWORD} + mysql-db-prod: image: mysql:8.0 container_name: mysql-db-prod @@ -71,4 +89,4 @@ networks: driver: bridge volumes: - mysql_prod_data: + mysql_prod_data: \ No newline at end of file From 1e7d6490e9b5b3e5fc02346eccaabf14f36e081f Mon Sep 17 00:00:00 2001 From: nokkae Date: Mon, 18 Aug 2025 18:49:10 +0900 Subject: [PATCH 02/14] =?UTF-8?q?temp:=20=EC=9E=84=EC=8B=9C=20=EB=B0=B0?= =?UTF-8?q?=ED=8F=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d74aff4..c5f11dc 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -77,7 +77,7 @@ jobs: # 2. 릴리스 : main/develop 브랜치로 Push될 때만 실행 makeTagAndRelease: name: Create Tag and Release - if: github.event_name == 'push' + # if: github.event_name == 'push' needs: backend-ci runs-on: ubuntu-latest permissions: @@ -107,7 +107,7 @@ jobs: # 3. 빌드 및 배포: main/develop 브랜치로 Push될 때만 실행 buildImageAndPush: name: 도커 이미지 빌드와 푸시 - if: github.event_name == 'push' + # if: github.event_name == 'push' needs: makeTagAndRelease runs-on: ubuntu-latest steps: From 65b44e25c08cb7dd29f7c101ed81f9bfe8527808 Mon Sep 17 00:00:00 2001 From: nokkae Date: Mon, 18 Aug 2025 19:24:18 +0900 Subject: [PATCH 03/14] =?UTF-8?q?fix:=20=EB=B9=8C=EB=93=9C=20=EA=B3=BC?= =?UTF-8?q?=EC=A0=95=EC=97=90=EC=84=9C=20=EC=BA=90=EC=8B=B1=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c5f11dc..2e265dd 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -29,14 +29,14 @@ jobs: java-version: '21' distribution: 'temurin' - # Gradle 캐싱을 추가하여 빌드 속도를 개선합니다. + # Gradle 캐싱 제거 -> 처음부터 빌드 - name: Cache Gradle packages uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}-v2 restore-keys: | ${{ runner.os }}-gradle- From 75fd35cf8d84701b51bac1b95c42710af9126e6d Mon Sep 17 00:00:00 2001 From: wonseokyoon Date: Mon, 18 Aug 2025 19:44:54 +0900 Subject: [PATCH 04/14] =?UTF-8?q?refactor:=20=EB=B9=8C=EB=93=9C=20?= =?UTF-8?q?=EC=B1=85=EC=9E=84:=20Dockerfile=20->=20workflows?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/Dockerfile | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index ff298d7..c612d77 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,18 +1,18 @@ -# --- Stage 1: 애플리케이션 빌드 단계 --- -# 소스 코드 컴파일 -FROM openjdk:21-jdk-slim AS builder -# 컨테이너 내의 작업 디렉터리를 /app으로 설정 -WORKDIR /app -# 모든 소스코드를 컨테이너의 /app 디렉터리로 복사 -COPY . . -# Gradle Wrapper 스크립트에 실행 권한을 부여 -RUN chmod +x ./gradlew -# Gradle을 사용하여 애플리케이션을 빌드 -# - clean: 이전 빌드 결과물(build 폴더)을 모두 삭제하여 깨끗한 상태에서 빌드를 시작 -# - build: 소스 코드를 컴파일하고 실행 가능한 JAR 파일을 생성 -# - --no-daemon: CI/CD 환경에 적합하도록 Gradle 데몬을 사용하지 않고 일회성으로 빌드를 실행 -# - -x test: CI 단계에서 이미 테스트를 수행했으므로, Docker 이미지를 만드는 과정에서는 테스트를 건너뜀 -RUN ./gradlew clean build --no-daemon -x test +## --- Stage 1: 애플리케이션 빌드 단계 --- +## 소스 코드 컴파일 +#FROM openjdk:21-jdk-slim AS builder +## 컨테이너 내의 작업 디렉터리를 /app으로 설정 +#WORKDIR /app +## 모든 소스코드를 컨테이너의 /app 디렉터리로 복사 +#COPY . . +## Gradle Wrapper 스크립트에 실행 권한을 부여 +#RUN chmod +x ./gradlew +## Gradle을 사용하여 애플리케이션을 빌드 +## - clean: 이전 빌드 결과물(build 폴더)을 모두 삭제하여 깨끗한 상태에서 빌드를 시작 +## - build: 소스 코드를 컴파일하고 실행 가능한 JAR 파일을 생성 +## - --no-daemon: CI/CD 환경에 적합하도록 Gradle 데몬을 사용하지 않고 일회성으로 빌드를 실행 +## - -x test: CI 단계에서 이미 테스트를 수행했으므로, Docker 이미지를 만드는 과정에서는 테스트를 건너뜀 +#RUN ./gradlew clean build --no-daemon -x test # --- Stage 2: 이미지 생성 --- @@ -21,7 +21,7 @@ FROM eclipse-temurin:21-jre # 컨테이너 내의 작업 디렉터리 WORKDIR /app # 현재 이미지의 /app 디렉터리로 복사하고, 이름을 app.jar로 변경 -COPY --from=builder /app/build/libs/*-SNAPSHOT.jar app.jar +COPY build/libs/*-SNAPSHOT.jar app.jar # 8080 포트를 외부에 노출 EXPOSE 8080 # "java -jar app.jar" 명령어로 Spring Boot 애플리케이션을 실행 From 2442385e8d55b4d98be2602a5c6a26eb66252a9d Mon Sep 17 00:00:00 2001 From: nokkae Date: Mon, 18 Aug 2025 19:46:09 +0900 Subject: [PATCH 05/14] fix:CI --- .github/workflows/deploy.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 2e265dd..d1d2483 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -112,6 +112,20 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: '21' + distribution: 'temurin' + + - name: Grant execute permission for gradlew + working-directory: ./backend + run: chmod +x ./gradlew + + - name: Build JAR with Gradle + working-directory: ./backend + run: ./gradlew clean build -x test - name: 빌드 컨텍스트 확인 (backend 폴더 내용) run: | From be754b9dc92a5d2c14ef8d66b73ee25dd4a25e87 Mon Sep 17 00:00:00 2001 From: nokkae Date: Mon, 18 Aug 2025 19:47:29 +0900 Subject: [PATCH 06/14] fix:CI --- .github/workflows/deploy.yml | 51 +++++++++++++++--------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d1d2483..f3b1e39 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -106,61 +106,52 @@ jobs: # 3. 빌드 및 배포: main/develop 브랜치로 Push될 때만 실행 buildImageAndPush: - name: 도커 이미지 빌드와 푸시 - # if: github.event_name == 'push' + name: 도커 이미지 빌드와 푸시 (디버깅 모드) needs: makeTagAndRelease runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - - name: Set up JDK 21 + - name: 1. 소스 코드 체크아웃 + uses: actions/checkout@v4 + + - name: 2. JDK 21 설치 uses: actions/setup-java@v4 with: java-version: '21' distribution: 'temurin' - - name: Grant execute permission for gradlew + - name: 3. 체크아웃된 파일 목록 확인 (prod.yml 존재 여부) + run: | + echo "--- 전체 파일 목록 ---" + ls -laR ./backend + echo "--- prod.yml 파일 검색 ---" + find ./backend -name "application-prod.yml" + + - name: 4. Gradle 실행 권한 부여 working-directory: ./backend run: chmod +x ./gradlew - - name: Build JAR with Gradle + - name: 5. CI 환경에서 직접 Gradle 빌드 실행 working-directory: ./backend run: ./gradlew clean build -x test - - name: 빌드 컨텍스트 확인 (backend 폴더 내용) + - name: 6. 생성된 JAR 파일 내용물 확인 (가장 중요) run: | - echo "--- Docker 빌드에 사용될 backend 폴더의 전체 파일 목록입니다 ---" - ls -laR ./backend + echo "--- 생성된 JAR 파일 내부 목록 확인 ---" + jar -tf ./backend/build/libs/*.jar | grep prod - - name: application-secret.yml 생성 + - name: 7. application-secret.yml 생성 (Docker 빌드용) env: APPLICATION_SECRET: ${{ secrets.APPLICATION_SECRET }} run: | mkdir -p ./backend/src/main/resources echo "$APPLICATION_SECRET" > ./backend/src/main/resources/application-secret.yml - - name: Docker Buildx 설치 - uses: docker/setup-buildx-action@v2 - - name: 레지스트리 로그인 - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - name: set lower case owner name - id: set_owner - run: | - echo "OWNER_LC=${OWNER,,}" >> ${GITHUB_ENV} - env: - OWNER: '${{ github.repository_owner }}' - - - name: 빌드 앤 푸시 + - name: 8. Docker 빌드 및 푸시 uses: docker/build-push-action@v3 with: context: ./backend push: true - # 이 옵션을 추가하여 Docker 빌드 캐시를 사용하지 않도록 강제합니다. no-cache: true tags: | - ghcr.io/${{ env.OWNER_LC }}/catch-course:${{ needs.makeTagAndRelease.outputs.tag_name }} - ghcr.io/${{ env.OWNER_LC }}/catch-course:latest + ghcr.io/${{ github.repository_owner }}/catch-course:${{ needs.makeTagAndRelease.outputs.tag_name }} + ghcr.io/${{ github.repository_owner }}/catch-course:latest \ No newline at end of file From ed870efaef343d7e6ff35a4b02797ec177ccf459 Mon Sep 17 00:00:00 2001 From: nokkae Date: Mon, 18 Aug 2025 20:08:49 +0900 Subject: [PATCH 07/14] fix:CI --- .github/workflows/deploy.yml | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f3b1e39..01dfcd6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -106,7 +106,7 @@ jobs: # 3. 빌드 및 배포: main/develop 브랜치로 Push될 때만 실행 buildImageAndPush: - name: 도커 이미지 빌드와 푸시 (디버깅 모드) + name: 도커 이미지 빌드와 푸시 needs: makeTagAndRelease runs-on: ubuntu-latest steps: @@ -119,34 +119,20 @@ jobs: java-version: '21' distribution: 'temurin' - - name: 3. 체크아웃된 파일 목록 확인 (prod.yml 존재 여부) - run: | - echo "--- 전체 파일 목록 ---" - ls -laR ./backend - echo "--- prod.yml 파일 검색 ---" - find ./backend -name "application-prod.yml" - - - name: 4. Gradle 실행 권한 부여 + - name: 3. Gradle 실행 권한 부여 working-directory: ./backend run: chmod +x ./gradlew + + - name: 4. application-secret.yml 생성 (빌드 전) + env: + APPLICATION_SECRET: ${{ secrets.APPLICATION_SECRET }} + run: echo "$APPLICATION_SECRET" > ./backend/src/main/resources/application-secret.yml - - name: 5. CI 환경에서 직접 Gradle 빌드 실행 + - name: 5. CI 환경에서 Gradle 빌드 실행 working-directory: ./backend run: ./gradlew clean build -x test - - name: 6. 생성된 JAR 파일 내용물 확인 (가장 중요) - run: | - echo "--- 생성된 JAR 파일 내부 목록 확인 ---" - jar -tf ./backend/build/libs/*.jar | grep prod - - - name: 7. application-secret.yml 생성 (Docker 빌드용) - env: - APPLICATION_SECRET: ${{ secrets.APPLICATION_SECRET }} - run: | - mkdir -p ./backend/src/main/resources - echo "$APPLICATION_SECRET" > ./backend/src/main/resources/application-secret.yml - - - name: 8. Docker 빌드 및 푸시 + - name: 6. Docker 빌드 및 푸시 uses: docker/build-push-action@v3 with: context: ./backend From f26b51bcdd8df68ffecb48c2dfb0b3d9ca3536a7 Mon Sep 17 00:00:00 2001 From: wonseokyoon Date: Mon, 18 Aug 2025 20:20:25 +0900 Subject: [PATCH 08/14] fix: Dockerfile --- backend/Dockerfile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index c612d77..fe551b0 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -2,17 +2,17 @@ ## 소스 코드 컴파일 #FROM openjdk:21-jdk-slim AS builder ## 컨테이너 내의 작업 디렉터리를 /app으로 설정 -#WORKDIR /app -## 모든 소스코드를 컨테이너의 /app 디렉터리로 복사 -#COPY . . -## Gradle Wrapper 스크립트에 실행 권한을 부여 -#RUN chmod +x ./gradlew -## Gradle을 사용하여 애플리케이션을 빌드 -## - clean: 이전 빌드 결과물(build 폴더)을 모두 삭제하여 깨끗한 상태에서 빌드를 시작 -## - build: 소스 코드를 컴파일하고 실행 가능한 JAR 파일을 생성 -## - --no-daemon: CI/CD 환경에 적합하도록 Gradle 데몬을 사용하지 않고 일회성으로 빌드를 실행 -## - -x test: CI 단계에서 이미 테스트를 수행했으므로, Docker 이미지를 만드는 과정에서는 테스트를 건너뜀 -#RUN ./gradlew clean build --no-daemon -x test +WORKDIR /app +# 모든 소스코드를 컨테이너의 /app 디렉터리로 복사 +COPY . . +# Gradle Wrapper 스크립트에 실행 권한을 부여 +RUN chmod +x ./gradlew +# Gradle을 사용하여 애플리케이션을 빌드 +# - clean: 이전 빌드 결과물(build 폴더)을 모두 삭제하여 깨끗한 상태에서 빌드를 시작 +# - build: 소스 코드를 컴파일하고 실행 가능한 JAR 파일을 생성 +# - --no-daemon: CI/CD 환경에 적합하도록 Gradle 데몬을 사용하지 않고 일회성으로 빌드를 실행 +# - -x test: CI 단계에서 이미 테스트를 수행했으므로, Docker 이미지를 만드는 과정에서는 테스트를 건너뜀 +RUN ./gradlew clean build --no-daemon -x test # --- Stage 2: 이미지 생성 --- From d059a8f77e840fcf0585935dcb471c972e5d787d Mon Sep 17 00:00:00 2001 From: wonseokyoon Date: Mon, 18 Aug 2025 20:26:32 +0900 Subject: [PATCH 09/14] fix: Dockerfile --- backend/Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/Dockerfile b/backend/Dockerfile index fe551b0..5c2e9a9 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -18,6 +18,8 @@ RUN ./gradlew clean build --no-daemon -x test # --- Stage 2: 이미지 생성 --- # JRE만 포함된 가벼운 이미지를 사용하여, 최소한의 파일만으로 이미지를 만듬 FROM eclipse-temurin:21-jre +# 소스 코드 컴파일 +FROM openjdk:21-jdk-slim AS builder # 컨테이너 내의 작업 디렉터리 WORKDIR /app # 현재 이미지의 /app 디렉터리로 복사하고, 이름을 app.jar로 변경 From 28e9f664e6bb75e7ed63526df46d6705ce1a575f Mon Sep 17 00:00:00 2001 From: wonseokyoon Date: Mon, 18 Aug 2025 20:30:28 +0900 Subject: [PATCH 10/14] fix: Dockerfile --- backend/Dockerfile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 5c2e9a9..3e010f8 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,6 +1,6 @@ ## --- Stage 1: 애플리케이션 빌드 단계 --- ## 소스 코드 컴파일 -#FROM openjdk:21-jdk-slim AS builder +FROM openjdk:21-jdk-slim AS builder ## 컨테이너 내의 작업 디렉터리를 /app으로 설정 WORKDIR /app # 모든 소스코드를 컨테이너의 /app 디렉터리로 복사 @@ -18,8 +18,6 @@ RUN ./gradlew clean build --no-daemon -x test # --- Stage 2: 이미지 생성 --- # JRE만 포함된 가벼운 이미지를 사용하여, 최소한의 파일만으로 이미지를 만듬 FROM eclipse-temurin:21-jre -# 소스 코드 컴파일 -FROM openjdk:21-jdk-slim AS builder # 컨테이너 내의 작업 디렉터리 WORKDIR /app # 현재 이미지의 /app 디렉터리로 복사하고, 이름을 app.jar로 변경 From 48edc6f123ae7c9b62b427c413cd202b1ec2827a Mon Sep 17 00:00:00 2001 From: nokkae Date: Mon, 18 Aug 2025 20:46:36 +0900 Subject: [PATCH 11/14] fix: CI --- .github/workflows/deploy.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 01dfcd6..ad5f6d6 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -109,6 +109,10 @@ jobs: name: 도커 이미지 빌드와 푸시 needs: makeTagAndRelease runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: - name: 1. 소스 코드 체크아웃 uses: actions/checkout@v4 From d1882ae247b26f212eb6f6a98e388f0dcebf8be3 Mon Sep 17 00:00:00 2001 From: nokkae Date: Mon, 18 Aug 2025 20:58:16 +0900 Subject: [PATCH 12/14] fix: CI --- .github/workflows/deploy.yml | 53 ++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ad5f6d6..0ae923a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -107,41 +107,46 @@ jobs: # 3. 빌드 및 배포: main/develop 브랜치로 Push될 때만 실행 buildImageAndPush: name: 도커 이미지 빌드와 푸시 + if: github.event_name == 'push' needs: makeTagAndRelease runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: 1. 소스 코드 체크아웃 - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - - name: 2. JDK 21 설치 - uses: actions/setup-java@v4 - with: - java-version: '21' - distribution: 'temurin' + - name: 빌드 컨텍스트 확인 (backend 폴더 내용) + run: | + echo "--- Docker 빌드에 사용될 backend 폴더의 전체 파일 목록입니다 ---" + ls -laR ./backend - - name: 3. Gradle 실행 권한 부여 - working-directory: ./backend - run: chmod +x ./gradlew - - - name: 4. application-secret.yml 생성 (빌드 전) + - name: application-secret.yml 생성 env: APPLICATION_SECRET: ${{ secrets.APPLICATION_SECRET }} - run: echo "$APPLICATION_SECRET" > ./backend/src/main/resources/application-secret.yml - - - name: 5. CI 환경에서 Gradle 빌드 실행 - working-directory: ./backend - run: ./gradlew clean build -x test + run: | + mkdir -p ./backend/src/main/resources + echo "$APPLICATION_SECRET" > ./backend/src/main/resources/application-secret.yml + - name: Docker Buildx 설치 + uses: docker/setup-buildx-action@v2 + - name: 레지스트리 로그인 + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - - name: 6. Docker 빌드 및 푸시 + - name: set lower case owner name + id: set_owner + run: | + echo "OWNER_LC=${OWNER,,}" >> ${GITHUB_ENV} + env: + OWNER: '${{ github.repository_owner }}' + + - name: 빌드 앤 푸시 uses: docker/build-push-action@v3 with: context: ./backend push: true + # 이 옵션을 추가하여 Docker 빌드 캐시를 사용하지 않도록 강제합니다. no-cache: true tags: | - ghcr.io/${{ github.repository_owner }}/catch-course:${{ needs.makeTagAndRelease.outputs.tag_name }} - ghcr.io/${{ github.repository_owner }}/catch-course:latest \ No newline at end of file + ghcr.io/${{ env.OWNER_LC }}/catch-course:${{ needs.makeTagAndRelease.outputs.tag_name }} + ghcr.io/${{ env.OWNER_LC }}/catch-course:latest \ No newline at end of file From db935b9f515cda9dc6cd51e00dc574dc80a2450e Mon Sep 17 00:00:00 2001 From: nokkae Date: Mon, 18 Aug 2025 21:03:10 +0900 Subject: [PATCH 13/14] fix: CI --- .github/workflows/deploy.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0ae923a..d3e338a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -29,14 +29,14 @@ jobs: java-version: '21' distribution: 'temurin' - # Gradle 캐싱 제거 -> 처음부터 빌드 + # Gradle 캐싱을 추가하여 빌드 속도를 개선합니다. - name: Cache Gradle packages uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}-v2 + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | ${{ runner.os }}-gradle- @@ -107,7 +107,7 @@ jobs: # 3. 빌드 및 배포: main/develop 브랜치로 Push될 때만 실행 buildImageAndPush: name: 도커 이미지 빌드와 푸시 - if: github.event_name == 'push' + # if: github.event_name == 'push' needs: makeTagAndRelease runs-on: ubuntu-latest steps: From f2fe026621b52054886935cfe1283b31a75a3800 Mon Sep 17 00:00:00 2001 From: wonseokyoon Date: Mon, 18 Aug 2025 21:09:18 +0900 Subject: [PATCH 14/14] fix: Dockerfile --- backend/Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 3e010f8..a74b2a6 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,7 +1,7 @@ -## --- Stage 1: 애플리케이션 빌드 단계 --- -## 소스 코드 컴파일 +# --- Stage 1: 애플리케이션 빌드 단계 --- +# 소스 코드 컴파일 FROM openjdk:21-jdk-slim AS builder -## 컨테이너 내의 작업 디렉터리를 /app으로 설정 +# 컨테이너 내의 작업 디렉터리를 /app으로 설정 WORKDIR /app # 모든 소스코드를 컨테이너의 /app 디렉터리로 복사 COPY . . @@ -21,8 +21,8 @@ FROM eclipse-temurin:21-jre # 컨테이너 내의 작업 디렉터리 WORKDIR /app # 현재 이미지의 /app 디렉터리로 복사하고, 이름을 app.jar로 변경 -COPY build/libs/*-SNAPSHOT.jar app.jar +COPY --from=builder /app/build/libs/*-SNAPSHOT.jar app.jar # 8080 포트를 외부에 노출 EXPOSE 8080 # "java -jar app.jar" 명령어로 Spring Boot 애플리케이션을 실행 -ENTRYPOINT ["java", "-jar", "app.jar"] +ENTRYPOINT ["java", "-jar", "app.jar"] \ No newline at end of file