Skip to content

Commit dc4c89f

Browse files
authored
Merge 28e9f66 into d920a92
2 parents d920a92 + 28e9f66 commit dc4c89f

3 files changed

Lines changed: 46 additions & 37 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ jobs:
2929
java-version: '21'
3030
distribution: 'temurin'
3131

32-
# Gradle 캐싱을 추가하여 빌드 속도를 개선합니다.
32+
# Gradle 캐싱 제거 -> 처음부터 빌드
3333
- name: Cache Gradle packages
3434
uses: actions/cache@v4
3535
with:
3636
path: |
3737
~/.gradle/caches
3838
~/.gradle/wrapper
39-
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
39+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}-v2
4040
restore-keys: |
4141
${{ runner.os }}-gradle-
4242
@@ -77,7 +77,7 @@ jobs:
7777
# 2. 릴리스 : main/develop 브랜치로 Push될 때만 실행
7878
makeTagAndRelease:
7979
name: Create Tag and Release
80-
if: github.event_name == 'push'
80+
# if: github.event_name == 'push'
8181
needs: backend-ci
8282
runs-on: ubuntu-latest
8383
permissions:
@@ -107,46 +107,37 @@ jobs:
107107
# 3. 빌드 및 배포: main/develop 브랜치로 Push될 때만 실행
108108
buildImageAndPush:
109109
name: 도커 이미지 빌드와 푸시
110-
if: github.event_name == 'push'
111110
needs: makeTagAndRelease
112111
runs-on: ubuntu-latest
113112
steps:
114-
- uses: actions/checkout@v4
113+
- name: 1. 소스 코드 체크아웃
114+
uses: actions/checkout@v4
115115

116-
- name: 빌드 컨텍스트 확인 (backend 폴더 내용)
117-
run: |
118-
echo "--- Docker 빌드에 사용될 backend 폴더의 전체 파일 목록입니다 ---"
119-
ls -laR ./backend
116+
- name: 2. JDK 21 설치
117+
uses: actions/setup-java@v4
118+
with:
119+
java-version: '21'
120+
distribution: 'temurin'
120121

121-
- name: application-secret.yml 생성
122+
- name: 3. Gradle 실행 권한 부여
123+
working-directory: ./backend
124+
run: chmod +x ./gradlew
125+
126+
- name: 4. application-secret.yml 생성 (빌드 전)
122127
env:
123128
APPLICATION_SECRET: ${{ secrets.APPLICATION_SECRET }}
124-
run: |
125-
mkdir -p ./backend/src/main/resources
126-
echo "$APPLICATION_SECRET" > ./backend/src/main/resources/application-secret.yml
127-
- name: Docker Buildx 설치
128-
uses: docker/setup-buildx-action@v2
129-
- name: 레지스트리 로그인
130-
uses: docker/login-action@v2
131-
with:
132-
registry: ghcr.io
133-
username: ${{ github.actor }}
134-
password: ${{ secrets.GITHUB_TOKEN }}
129+
run: echo "$APPLICATION_SECRET" > ./backend/src/main/resources/application-secret.yml
135130

136-
- name: set lower case owner name
137-
id: set_owner
138-
run: |
139-
echo "OWNER_LC=${OWNER,,}" >> ${GITHUB_ENV}
140-
env:
141-
OWNER: '${{ github.repository_owner }}'
142-
143-
- name: 빌드 앤 푸시
131+
- name: 5. CI 환경에서 Gradle 빌드 실행
132+
working-directory: ./backend
133+
run: ./gradlew clean build -x test
134+
135+
- name: 6. Docker 빌드 및 푸시
144136
uses: docker/build-push-action@v3
145137
with:
146138
context: ./backend
147139
push: true
148-
# 이 옵션을 추가하여 Docker 빌드 캐시를 사용하지 않도록 강제합니다.
149140
no-cache: true
150141
tags: |
151-
ghcr.io/${{ env.OWNER_LC }}/catch-course:${{ needs.makeTagAndRelease.outputs.tag_name }}
152-
ghcr.io/${{ env.OWNER_LC }}/catch-course:latest
142+
ghcr.io/${{ github.repository_owner }}/catch-course:${{ needs.makeTagAndRelease.outputs.tag_name }}
143+
ghcr.io/${{ github.repository_owner }}/catch-course:latest

backend/Dockerfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# --- Stage 1: 애플리케이션 빌드 단계 ---
2-
# 소스 코드 컴파일
1+
## --- Stage 1: 애플리케이션 빌드 단계 ---
2+
## 소스 코드 컴파일
33
FROM openjdk:21-jdk-slim AS builder
4-
# 컨테이너 내의 작업 디렉터리를 /app으로 설정
4+
## 컨테이너 내의 작업 디렉터리를 /app으로 설정
55
WORKDIR /app
66
# 모든 소스코드를 컨테이너의 /app 디렉터리로 복사
77
COPY . .
@@ -21,7 +21,7 @@ FROM eclipse-temurin:21-jre
2121
# 컨테이너 내의 작업 디렉터리
2222
WORKDIR /app
2323
# 현재 이미지의 /app 디렉터리로 복사하고, 이름을 app.jar로 변경
24-
COPY --from=builder /app/build/libs/*-SNAPSHOT.jar app.jar
24+
COPY build/libs/*-SNAPSHOT.jar app.jar
2525
# 8080 포트를 외부에 노출
2626
EXPOSE 8080
2727
# "java -jar app.jar" 명령어로 Spring Boot 애플리케이션을 실행

backend/docker-compose-prod.yml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,22 @@
11
services:
2+
# Spring Boot 애플리케이션 서비스 추가
3+
app-prod:
4+
image: ghcr.io/wonseokyoon/catch-course:latest
5+
container_name: app-prod
6+
restart: always
7+
depends_on:
8+
- mysql-db-prod
9+
- redis-prod
10+
- kafka-prod
11+
ports:
12+
- "8080:8080"
13+
networks:
14+
- prod-network
15+
environment:
16+
- SPRING_PROFILES_ACTIVE=prod
17+
- DB_USERNAME=${DB_USERNAME}
18+
- DB_PASSWORD=${DB_PASSWORD}
19+
220
mysql-db-prod:
321
image: mysql:8.0
422
container_name: mysql-db-prod
@@ -71,4 +89,4 @@ networks:
7189
driver: bridge
7290

7391
volumes:
74-
mysql_prod_data:
92+
mysql_prod_data:

0 commit comments

Comments
 (0)