Skip to content

Commit 1c62951

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents aba2542 + e5a0958 commit 1c62951

4 files changed

Lines changed: 59 additions & 52 deletions

File tree

.github/workflows/ci-cd.yml

Lines changed: 23 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: CI/CD - Build, Push and Deploy
1+
name: CI/CD - 도커 컴포즈를 이용한 빌드, 푸시, 배포
22

33
on:
44
push:
@@ -11,32 +11,31 @@ concurrency:
1111
jobs:
1212
build-and-push:
1313
runs-on: ubuntu-latest
14-
14+
1515
env:
1616
AWS_REGION: ap-northeast-2
1717
ECR_REGISTRY: 118497224929.dkr.ecr.ap-northeast-2.amazonaws.com
1818
ECR_REPOSITORY: clip-trip/server
1919
IMAGE_TAG: latest
2020

2121
steps:
22-
- name: Checkout source
22+
- name: 소스코드 체크아웃
2323
uses: actions/checkout@v4
2424

25-
- name: Set up Java
25+
- name: 자바 환경 설정
2626
uses: actions/setup-java@v4
2727
with:
2828
distribution: 'temurin'
2929
java-version: '21'
3030

31-
- name: make application-prod.yml
31+
- name: application.yml 파일 생성
3232
run: |
3333
mkdir -p ./src/main/resources
3434
cd ./src/main/resources
35-
touch ./application-dev.yml
3635
echo "${{ secrets.APPLICATION_PROD }}" > ./application.yml
3736
shell: bash
3837

39-
- name: Gradle Caching
38+
- name: Gradle 캐싱
4039
uses: actions/cache@v4
4140
with:
4241
path: |
@@ -45,23 +44,20 @@ jobs:
4544
restore-keys: |
4645
${{ runner.os }}-gradle-
4746
48-
- name: Build Spring Boot App
47+
- name: 스프링 부트 앱 빌드
4948
run: ./gradlew clean bootJar -x test
5049

51-
- name: Copy jar for Docker
52-
run: cp build/libs/*.jar app.jar
53-
54-
- name: Configure AWS Credentials
50+
- name: AWS 자격 증명 설정
5551
uses: aws-actions/configure-aws-credentials@v4
5652
with:
5753
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
5854
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
5955
aws-region: ${{ env.AWS_REGION }}
6056

61-
- name: Log in to Amazon ECR
57+
- name: Amazon ECR 로그인
6258
uses: aws-actions/amazon-ecr-login@v2
6359

64-
- name: Build and Push Docker Image
60+
- name: 도커 이미지 빌드 및 푸시
6561
run: |
6662
IMAGE_URI=$(aws sts get-caller-identity --query "Account" --output text).dkr.ecr.${{ env.AWS_REGION }}.amazonaws.com/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }}
6763
docker build -t $IMAGE_URI .
@@ -72,36 +68,27 @@ jobs:
7268
needs: [ build-and-push ]
7369

7470
steps:
75-
- name: Deploy to EC2 via SSH
71+
- name: 소스코드 체크아웃
72+
uses: actions/checkout@v4
73+
74+
- name: SSH를 통해 EC2에 배포
7675
uses: appleboy/ssh-action@v0.1.7
7776
with:
7877
host: ${{ secrets.EC2_HOST }}
7978
username: ec2-user
8079
key: ${{ secrets.EC2_SSH_PRIVATE_KEY }}
8180
script: |
8281
set -eux
83-
84-
# EC2 서버 내부에서 환경 변수 직접 정의
85-
AWS_REGION="ap-northeast-2"
86-
ECR_REGISTRY="118497224929.dkr.ecr.ap-northeast-2.amazonaws.com"
87-
ECR_REPOSITORY="clip-trip/server"
88-
IMAGE_TAG="latest"
89-
90-
CONTAINER_NAME=clip-trip-server
91-
IMAGE_URI=${ECR_REGISTRY}/${ECR_REPOSITORY}:${IMAGE_TAG}
9282
93-
echo "AWS_REGION: ${AWS_REGION}"
94-
echo "ECR_REGISTRY: ${ECR_REGISTRY}"
95-
echo "IMAGE_URI: ${IMAGE_URI}"
83+
# ECR 환경 변수 설정
84+
export AWS_REGION="ap-northeast-2"
85+
export ECR_REGISTRY="118497224929.dkr.ecr.ap-northeast-2.amazonaws.com"
86+
export ECR_REPOSITORY="clip-trip/server"
87+
export IMAGE_TAG="latest"
9688
97-
# ECR 로그인 및 최신 이미지 풀
89+
# ECR 로그인
9890
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REGISTRY}
99-
docker pull ${IMAGE_URI}
100-
101-
# 기존 컨테이너 중지 및 삭제 (오류 무시)
102-
docker stop "$CONTAINER_NAME" || true
103-
docker rm "$CONTAINER_NAME" || true
10491
105-
# 새로운 컨테이너 실행
106-
echo "Running new container $CONTAINER_NAME"
107-
docker run -d --name "$CONTAINER_NAME" -p 8080:8080 ${IMAGE_URI}
92+
# 도커 컴포즈로 배포
93+
# 'up' 명령어가 docker-compose.yml 파일을 현재 디렉토리에서 찾음.
94+
docker-compose up -d --force-recreate

Dockerfile

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
FROM openjdk:21-jdk-slim AS builder
2+
3+
WORKDIR /app
4+
5+
COPY build/libs/*.jar app.jar
6+
17
FROM openjdk:21-jdk-slim
2-
COPY app.jar app.jar
8+
9+
WORKDIR /app
10+
11+
COPY --from=builder /app/app.jar .
12+
313
ENTRYPOINT ["java", "-jar", "app.jar"]

docker-compose-local.yml

Lines changed: 0 additions & 15 deletions
This file was deleted.

docker-compose.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
version: '3.8'
2+
3+
services:
4+
redis:
5+
image: redis:7.2.5
6+
container_name: redis
7+
restart: always
8+
volumes:
9+
- redis_data:/data
10+
11+
app:
12+
build: .
13+
image: 118497224929.dkr.ecr.ap-northeast-2.amazonaws.com/clip-trip/server:latest
14+
container_name: clip-trip-server
15+
ports:
16+
- "8080:8080"
17+
depends_on:
18+
- redis
19+
environment:
20+
- SPRING_DATA_REDIS_HOST=redis
21+
- SPRING_DATA_REDIS_PORT=6379
22+
restart: always
23+
24+
volumes:
25+
redis_data:

0 commit comments

Comments
 (0)