fix(deploy): 폴링 타이머로 백엔드 자동 재시작

- Docker 컨테이너에서 nsenter/inotify 불가 → 30초 폴링 타이머로 변경
- kcg-backend-deploy.timer: 30초마다 JAR mtime 체크
- kcg-backend-deploy.service: JAR 갱신 감지 시 systemd 파일 교체 + restart
- watcher.path(inotify 기반) 제거, deploy.timer(폴링 기반)로 교체

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
htlee 2026-03-18 06:29:28 +09:00
부모 fe1de4bf51
커밋 150b236ee8
3개의 변경된 파일37개의 추가작업 그리고 5개의 파일을 삭제

파일 보기

@ -75,12 +75,12 @@ jobs:
echo "JAR 내부 application-prod.yml 감지 → 외부 파일 제거"
fi
# systemd 서비스 파일 배포 (watcher가 반영)
# systemd 서비스/타이머 파일 배포 (호스트 타이머가 감지하여 반영)
cp deploy/kcg-backend.service $DEPLOY_DIR/kcg-backend.service
cp deploy/kcg-backend-watcher.service $DEPLOY_DIR/kcg-backend-watcher.service
cp deploy/kcg-backend-watcher.path $DEPLOY_DIR/kcg-backend-watcher.path
cp deploy/kcg-backend-deploy.service $DEPLOY_DIR/kcg-backend-deploy.service
cp deploy/kcg-backend-deploy.timer $DEPLOY_DIR/kcg-backend-deploy.timer
# JAR 교체 + 재시작 트리거
# JAR 교체 (호스트 타이머가 JAR mtime 변경 감지 → 자동 재시작)
cp backend/target/kcg.jar $DEPLOY_DIR/kcg.jar
date '+%s' > $DEPLOY_DIR/.deploy-trigger
echo "Backend deployed at $(date '+%Y-%m-%d %H:%M:%S')"
echo "Host timer will detect JAR update and restart within 30s"

파일 보기

@ -0,0 +1,23 @@
[Unit]
Description=Check and restart KCG Backend if JAR updated
[Service]
Type=oneshot
ExecStart=/bin/bash -c '\
DEPLOY_DIR=/devdata/services/kcg/backend; \
JAR=$DEPLOY_DIR/kcg.jar; \
MARKER=$DEPLOY_DIR/.last-restart; \
[ ! -f "$JAR" ] && exit 0; \
if [ "$JAR" -nt "$MARKER" ] 2>/dev/null || [ ! -f "$MARKER" ]; then \
SYSTEMD_DIR=/etc/systemd/system; \
CHANGED=0; \
for f in kcg-backend.service kcg-backend-deploy.service kcg-backend-deploy.timer; do \
if [ -f "$DEPLOY_DIR/$f" ] && ! diff -q "$DEPLOY_DIR/$f" "$SYSTEMD_DIR/$f" >/dev/null 2>&1; then \
cp "$DEPLOY_DIR/$f" "$SYSTEMD_DIR/$f"; \
CHANGED=1; \
fi; \
done; \
[ "$CHANGED" = "1" ] && systemctl daemon-reload; \
systemctl restart kcg-backend; \
touch "$MARKER"; \
fi'

파일 보기

@ -0,0 +1,9 @@
[Unit]
Description=Poll for KCG Backend deploy (JAR update check)
[Timer]
OnBootSec=60
OnUnitActiveSec=30
[Install]
WantedBy=timers.target