#!/bin/sh # 운영 서버에서 실행되는 배포 스크립트 # webhook 이 이걸 spawn 함. 또는 cron/수동 실행 가능 # 호스트에 미리 배치: cp scripts/deploy.sh /deploy/deploy.sh && chmod +x set -e cd /deploy/source 2>/dev/null || cd "$HOME/momo-erp/source" # 컨테이너 안에서 webhook 가 호출 시: 호스트 chpark(1000) 소유 디렉토리를 # nextjs(1001) 가 git 명령으로 다룸 → git 의 "dubious ownership" 거부 회피 git config --global --add safe.directory "$(pwd)" 2>/dev/null || true git config --global --add safe.directory '*' 2>/dev/null || true echo "[$(date)] git fetch + reset --hard origin/main" git fetch origin git reset --hard origin/main # build-sha.txt — 헬스체크가 이 값으로 운영 반영 SHA 검증 git rev-parse HEAD > public/build-sha.txt echo "[$(date)] ▶ 배포 대상 SHA: $(cat public/build-sha.txt)" # 업로드 저장은 named volume(momo_data_storage)으로 이전됨 — 호스트 디렉토리 prep 불필요 echo "[$(date)] docker compose up --build" docker compose -f docker-compose.prod.yml up -d --build echo "[$(date)] migrate:momo (idempotent)" docker compose -f docker-compose.prod.yml exec -T momo-erp npm run migrate:momo || true echo "[$(date)] docker ps" docker compose -f docker-compose.prod.yml ps echo "[$(date)] ✔ 배포 완료"