Skip to content

Commit c30edc7

Browse files
authored
refactor: 스프링 부트 앱 외의 사이드 인프라 배포 과정을 분리 (#592)
* refactor: dev 환경에서의 side-infra 배포 과정 분리 * refactor: prod 환경에서의 side-infra 배포 과정 분리 * refactor: docker-compose 가 실행되고 있지 않아도 스크립트가 실패하지 않게 변경 * fix: docker compose up 시에 사용할 환경변수 중 누락된 변수를 추가
1 parent 2cf03ee commit c30edc7

4 files changed

Lines changed: 17 additions & 121 deletions

File tree

.github/workflows/dev-cd.yml

Lines changed: 7 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -108,14 +108,11 @@ jobs:
108108
scp -i deploy_key.pem \
109109
-o StrictHostKeyChecking=no \
110110
./docker-compose.dev.yml \
111-
./docs/infra-config/config.alloy \
112-
./docs/infra-config/nginx.dev.conf \
113111
${{ secrets.DEV_USERNAME }}@${{ secrets.DEV_HOST }}:/home/${{ secrets.DEV_USERNAME }}/solid-connection-dev/
114112
115113
# --- 서버에서 Docker Pull 및 재시작 ---
116-
- name: Run docker compose and apply nginx config
114+
- name: Run deployment on server
117115
run: |
118-
# GITHUB_TOKEN을 이용해 서버에서 로그인 (App Token 불필요)
119116
ssh -i deploy_key.pem \
120117
-o StrictHostKeyChecking=no \
121118
${{ secrets.DEV_USERNAME }}@${{ secrets.DEV_HOST }} \
@@ -127,38 +124,18 @@ jobs:
127124
export IMAGE_TAG_ONLY="${{ needs.build-and-push.outputs.image_tag }}"
128125
export FULL_IMAGE_NAME="ghcr.io/${OWNER_LOWERCASE}/solid-connection-dev:${IMAGE_TAG_ONLY}"
129126
130-
# 2. 서버가 GHCR에 로그인 (GITHUB_TOKEN 사용)
131-
# App Token 대신 현재 워크플로우의 임시 토큰을 넘겨줍니다.
127+
# 2. GHCR 로그인 & Pull
132128
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
133-
134-
# 3. Docker Pull
135129
echo "Pulling new image: $FULL_IMAGE_NAME"
136130
docker pull $FULL_IMAGE_NAME
137131
138-
# 4. alloy 설정 및 Nginx 설정 적용
139-
cd /home/${{ secrets.DEV_USERNAME }}/solid-connection-dev
140-
141-
mkdir -p ./docs/infra-config
142-
143-
if [ -d "./docs/infra-config/config.alloy" ]; then
144-
echo "Removing directory created by Docker..."
145-
rm -rf ./docs/infra-config/config.alloy
146-
fi
147-
148-
mv -f ./config.alloy ./docs/infra-config/config.alloy
149-
150-
mkdir -p ./nginx
151-
mv ./nginx.dev.conf ./nginx/default.conf
152-
sudo cp ./nginx/default.conf /etc/nginx/conf.d/default.conf
153-
sudo nginx -t
154-
sudo nginx -s reload
155-
156-
# 5. Docker Compose 재시작
132+
# 3. Spring Boot 앱 재시작
157133
echo "Restarting Docker Compose with tag: $IMAGE_TAG_ONLY"
158-
docker compose -f docker-compose.dev.yml down
159-
IMAGE_TAG=$IMAGE_TAG_ONLY docker compose -f docker-compose.dev.yml up -d
134+
cd /home/${{ secrets.DEV_USERNAME }}/solid-connection-dev
135+
docker compose -f docker-compose.dev.yml down || true
136+
OWNER_LOWERCASE=$OWNER_LOWERCASE IMAGE_TAG=$IMAGE_TAG_ONLY docker compose -f docker-compose.dev.yml up -d
160137
161-
# 6. 정리 작업
138+
# 4. 정리 작업
162139
echo "Pruning dangling images..."
163140
docker image prune -f
164141

.github/workflows/prod-cd.yml

Lines changed: 4 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,6 @@ jobs:
124124
scp -i deploy_key.pem \
125125
-o StrictHostKeyChecking=no \
126126
./docker-compose.prod.yml \
127-
./docs/infra-config/config.alloy \
128-
./docs/infra-config/nginx.prod.conf \
129127
${{ secrets.USERNAME }}@${{ secrets.HOST }}:/home/${{ secrets.USERNAME }}/solid-connection-prod/
130128
131129
# --- 서버에서 Docker Pull 및 재시작 ---
@@ -142,35 +140,16 @@ jobs:
142140
export IMAGE_TAG_ONLY="${{ needs.build-and-push.outputs.image_tag }}"
143141
export FULL_IMAGE_NAME="ghcr.io/${OWNER_LOWERCASE}/solid-connection-server:${IMAGE_TAG_ONLY}"
144142
145-
# 2. 서버가 GHCR에 로그인 (GITHUB_TOKEN 사용)
143+
# 2. GHCR 로그인 & Pull
146144
# App Token 대신 현재 워크플로우의 임시 토큰을 사용합니다.
147145
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
148-
149-
# 3. docker pull
150146
echo "Pulling new image: $FULL_IMAGE_NAME"
151147
docker pull $FULL_IMAGE_NAME
152148
153-
# 4. alloy 설정 및 Nginx 설정 적용
154-
cd /home/${{ secrets.USERNAME }}/solid-connection-prod
155-
156-
mkdir -p ./docs/infra-config
157-
158-
if [ -d "./docs/infra-config/config.alloy" ]; then
159-
echo "Removing directory created by Docker..."
160-
rm -rf ./docs/infra-config/config.alloy
161-
fi
162-
163-
mv -f ./config.alloy ./docs/infra-config/config.alloy
164-
165-
mkdir -p ./nginx
166-
mv ./nginx.prod.conf ./nginx/default.conf
167-
sudo cp ./nginx/default.conf /etc/nginx/conf.d/default.conf
168-
sudo nginx -t
169-
sudo nginx -s reload
170-
171-
# 5. Docker Compose 재시작
149+
# 3. Spring Boot 앱 재시작
172150
echo "Restarting Docker Compose with tag: $IMAGE_TAG_ONLY"
173-
docker compose -f docker-compose.prod.yml down
151+
cd /home/${{ secrets.USERNAME }}/solid-connection-prod
152+
docker compose -f docker-compose.prod.yml down || true
174153
OWNER_LOWERCASE=$OWNER_LOWERCASE IMAGE_TAG=$IMAGE_TAG_ONLY docker compose -f docker-compose.prod.yml up -d
175154
176155
# 6. 정리

docker-compose.dev.yml

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,14 @@
11
version: '3.8'
22

33
services:
4-
redis:
5-
image: redis:latest
6-
container_name: redis
7-
ports:
8-
- "6379:6379"
9-
10-
redis-exporter:
11-
image: oliver006/redis_exporter
12-
container_name: redis-exporter
13-
ports:
14-
- "9121:9121"
15-
environment:
16-
REDIS_ADDR: "redis:6379"
17-
depends_on:
18-
- redis
19-
204
solid-connection-dev:
215
image: ghcr.io/${OWNER_LOWERCASE}/solid-connection-dev:${IMAGE_TAG:-latest}
226
container_name: solid-connection-dev
23-
ports:
24-
- "8080:8080"
25-
- "8081:8081"
7+
network_mode: "host"
268
environment:
279
- SPRING_PROFILES_ACTIVE=dev
28-
- SPRING_DATA_REDIS_HOST=redis
10+
- SPRING_DATA_REDIS_HOST=127.0.0.1
2911
- SPRING_DATA_REDIS_PORT=6379
3012
volumes:
3113
- ./logs:/var/log/spring
32-
depends_on:
33-
- redis
34-
35-
alloy:
36-
image: grafana/alloy:latest
37-
container_name: alloy
38-
ports:
39-
- "12345:12345"
40-
volumes:
41-
- ./logs:/var/log/spring
42-
- ./docs/infra-config/config.alloy:/etc/alloy/config.alloy:ro
43-
environment:
44-
- ALLOY_ENV=dev
14+
restart: always

docker-compose.prod.yml

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,14 @@
11
version: '3.8'
22

33
services:
4-
redis:
5-
image: redis:latest
6-
container_name: redis
7-
ports:
8-
- "6379:6379"
9-
10-
redis-exporter:
11-
image: oliver006/redis_exporter
12-
container_name: redis-exporter
13-
ports:
14-
- "9121:9121"
15-
environment:
16-
REDIS_ADDR: "redis:6379"
17-
depends_on:
18-
- redis
19-
204
solid-connection-server:
215
image: ghcr.io/${OWNER_LOWERCASE}/solid-connection-server:${IMAGE_TAG:-latest}
226
container_name: solid-connection-server
23-
ports:
24-
- "8080:8080"
25-
- "8081:8081"
7+
network_mode: "host"
268
environment:
279
- SPRING_PROFILES_ACTIVE=prod
28-
- SPRING_DATA_REDIS_HOST=redis
10+
- SPRING_DATA_REDIS_HOST=127.0.0.1
2911
- SPRING_DATA_REDIS_PORT=6379
3012
volumes:
3113
- ./logs:/var/log/spring
32-
depends_on:
33-
- redis
34-
35-
alloy:
36-
image: grafana/alloy:latest
37-
container_name: alloy
38-
ports:
39-
- "12345:12345"
40-
volumes:
41-
- ./logs:/var/log/spring
42-
- ./docs/infra-config/config.alloy:/etc/alloy/config.alloy:ro
43-
environment:
44-
- ALLOY_ENV=production
14+
restart: always

0 commit comments

Comments
 (0)