Skip to content

Commit 76f23d3

Browse files
committed
fix: 무중단 배포 로직 수정
1 parent 1ffa438 commit 76f23d3

1 file changed

Lines changed: 18 additions & 24 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -119,45 +119,41 @@ jobs:
119119
set -e
120120
121121
IMAGE="ghcr.io/${{ needs.buildImageAndPush.outputs.owner_lc }}/${{ needs.buildImageAndPush.outputs.image_name }}:latest"
122-
SOCKET="/var/run/haproxy.sock"
122+
CFG="/dockerProjects/ha_proxy_1/volumes/usr/local/etc/haproxy/haproxy.cfg"
123123
124124
echo "=== Blue-Green Deploy Start ==="
125125
126-
# 현재 활성 server 확인
127-
ACTIVE=$(docker exec ha_proxy_1 \
128-
sh -c "echo 'show servers state app_backend' | socat stdio $SOCKET" \
129-
| grep RUNNING | awk '{print $2}')
130-
131-
if [ "$ACTIVE" = "blue" ]; then
132-
NEW="app1_temp"
133-
NEW_SERVER="green"
126+
# 현재 활성 컨테이너 판단
127+
if docker ps --format '{{.Names}}' | grep -q "^app1$"; then
134128
OLD="app1"
129+
NEW="app1_temp"
135130
OLD_SERVER="blue"
131+
NEW_SERVER="green"
136132
else
137-
NEW="app1"
138-
NEW_SERVER="blue"
139133
OLD="app1_temp"
134+
NEW="app1"
140135
OLD_SERVER="green"
136+
NEW_SERVER="blue"
141137
fi
142138
143-
echo "Active server: $OLD_SERVER"
144-
echo "New server: $NEW_SERVER"
139+
echo "OLD: $OLD ($OLD_SERVER)"
140+
echo "NEW: $NEW ($NEW_SERVER)"
145141
146142
# 이미지 pull
147143
docker pull $IMAGE
148144
149-
# 신규 컨테이너 정리
145+
# 컨테이너 정리
150146
docker stop $NEW 2>/dev/null || true
151147
docker rm $NEW 2>/dev/null || true
152148
153-
# 신규 컨테이너 실행
149+
# 컨테이너 실행
154150
docker run -d \
155151
--name $NEW \
156152
--network common \
157153
-e DOPPLER_TOKEN=${{ secrets.DOPPLER_TOKEN }} \
158154
$IMAGE
159155
160-
# Health check
156+
# Health Check
161157
for i in {1..30}; do
162158
if docker exec $NEW curl -fs http://localhost:8080/actuator/health > /dev/null; then
163159
echo "✅ Health check passed"
@@ -172,18 +168,16 @@ jobs:
172168
sleep 2
173169
done
174170
175-
# 트래픽 전환 (무중단 핵심)
176-
docker exec ha_proxy_1 sh -c "
177-
echo 'enable server app_backend/$NEW_SERVER' | socat stdio $SOCKET
178-
echo 'disable server app_backend/$OLD_SERVER' | socat stdio $SOCKET
179-
"
171+
# HAProxy 설정 스위칭
172+
sed -i "s/server $NEW_SERVER .* disabled/server $NEW_SERVER app1_temp:8080 check/" $CFG
173+
sed -i "s/server $OLD_SERVER .* check/server $OLD_SERVER app1:8080 check disabled/" $CFG
180174
181-
echo "✅ Traffic switched: $OLD_SERVER → $NEW_SERVER"
175+
docker kill -s HUP ha_proxy_1
176+
echo "✅ HAProxy reloaded"
182177
183-
# 안정화
184178
sleep 20
185179
186-
# 이전 컨테이너 정리
180+
# 이전 컨테이너 제거
187181
docker stop $OLD 2>/dev/null || true
188182
docker rm $OLD 2>/dev/null || true
189183

0 commit comments

Comments
 (0)