Skip to content

Commit 2940d35

Browse files
committed
배포 관련 수정
1 parent b6f5988 commit 2940d35

3 files changed

Lines changed: 16 additions & 41 deletions

File tree

.dockerignore

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
# 호스트 머신에서 생성된 빌드 아티팩트
2-
build/
1+
# Gradle 캐시
32
.gradle/
43

54
# IDE 설정

.github/workflows/cd.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,19 @@ jobs:
2727
key: ${{ secrets.SERVER_SSH_KEY }}
2828
port: 22
2929
script: |
30-
# 1. 서버에 미리 클론해둔 프로젝트 디렉토리로 이동합니다.
30+
# 1. 서버에 있는 프로젝트 디렉토리로 이동합니다.
3131
cd /home/${{ secrets.SERVER_USER }}/BackEnd
3232
33-
# 2. 최신 소스 코드를 pull 받습니다.
34-
echo "Pulling latest source code..."
33+
# 2. docker-compose.yml 같은 설정 파일 변경을 반영하기 위해 git pull을 실행합니다.
34+
echo "Pulling latest configuration files..."
3535
git pull origin main
3636
3737
# 3. GitHub Secret으로부터 .env 파일을 생성합니다.
3838
echo "Creating .env file..."
3939
echo "${{ secrets.ENV_FILE }}" > .env
4040
41-
# 4. docker-compose.yml에 정의된 최신 이미지들을 pull 받습니다.
42-
echo "Pulling latest docker images from registry..."
41+
# 4. ci.yml에서 빌드한 최신 Docker 이미지를 pull 받습니다.
42+
echo "Pulling latest docker image from registry..."
4343
docker-compose pull
4444
4545
# 5. 인증서 존재 여부 확인 및 발급/갱신 처리
@@ -48,19 +48,19 @@ jobs:
4848
if [ -d "$CERT_DIR" ]; then
4949
# --- 인증서가 이미 있는 경우 ---
5050
echo "Certificate found. Starting services and renewing..."
51-
docker-compose up -d --build
51+
# --build 플래그를 제거하여, 서버에서 재빌드하는 대신 pull 받은 이미지를 사용하도록 합니다.
52+
docker-compose up -d
5253
docker-compose exec certbot renew --quiet
5354
else
5455
# --- 인증서가 없는 경우 (최초 배포) ---
5556
echo "Certificate not found. Issuing a new one..."
56-
# Certbot 단독 모드로 인증서 발급 (80번 포트를 직접 사용)
5757
docker-compose run --rm certbot certonly --standalone \
5858
--email ${{ env.EMAIL }} -d ${{ env.DOMAIN }} \
5959
--rsa-key-size 4096 --agree-tos --non-interactive
60-
# 모든 서비스를 시작
61-
docker-compose up -d --build
60+
# --build 플래그를 제거하여, 서버에서 재빌드하는 대신 pull 받은 이미지를 사용하도록 합니다.
61+
docker-compose up -d
6262
fi
6363
6464
# 6. 불필요한 Docker 이미지를 정리합니다.
6565
echo "Pruning unused docker images..."
66-
docker image prune -f
66+
docker image prune -f

Dockerfile

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,12 @@
1-
# =================================================================
2-
# 1. Build Stage: 애플리케이션을 빌드하는 단계
3-
# =================================================================
4-
# Gradle과 JDK 21을 포함한 이미지를 빌더(builder)로 지정
5-
FROM gradle:8.5.0-jdk21 AS builder
6-
7-
# 작업 디렉토리 설정
8-
WORKDIR /home/gradle/src
9-
10-
# 빌드에 필요한 최소한의 파일만 명시적으로 복사합니다.
11-
COPY gradlew build.gradle settings.gradle ./
12-
COPY gradle ./gradle
13-
COPY src ./src
14-
15-
# (중요) gradlew 스크립트의 라인 엔딩(CRLF -> LF)을 수정하고 실행 권한을 부여합니다.
16-
# Windows 호스트 환경에서 발생하는 문제를 해결합니다.
17-
RUN sed -i 's/\r$//' ./gradlew && chmod +x ./gradlew
18-
19-
# Gradle 빌드 실행 (테스트는 제외하여 빌드 속도 향상)
20-
RUN ./gradlew build --no-daemon -x test
21-
22-
23-
# =================================================================
24-
# 2. Final Stage: 빌드된 애플리케이션을 실행하는 단계
25-
# =================================================================
26-
# JRE(Java Runtime Environment)만 포함된 가벼운 이미지를 사용
1+
# 실행에 필요한 최소한의 Java(JRE) 환경
272
FROM eclipse-temurin:21-jre
283

29-
# 애플리케이션 실행 디렉토리
4+
# 작업 디렉토리
305
WORKDIR /app
316

32-
# Build Stage에서 생성된 JAR 파일만 복사
33-
COPY --from=builder /home/gradle/src/build/libs/*.jar /app/app.jar
7+
# 로컬(또는 CI)에서 빌드된 JAR 파일을 컨테이너로 복사
8+
# 중요: 이 경로에 JAR 파일이 미리 생성되어 있어야 합니다.
9+
COPY build/libs/*.jar /app/app.jar
3410

3511
# 애플리케이션 실행
3612
ENTRYPOINT ["java","-jar","/app/app.jar"]

0 commit comments

Comments
 (0)