Files
web-page-backend/scripts/deploy.sh

65 lines
1.8 KiB
Bash

#!/bin/bash
set -euo pipefail
# 1. 자동 감지: Docker 컨테이너 내부인가?
if [ -d "/repo" ] && [ -d "/runtime" ]; then
echo "Detected Docker Container environment."
SRC="/repo"
DST="/runtime"
else
# 2. Host 환경: .env 로드 시도
if [ -f ".env" ]; then
echo "Loading .env file..."
set -a; source .env; set +a
fi
# 환경변수가 없으면 현재 디렉토리를 SRC로
SRC="${REPO_PATH:-$(pwd)}"
DST="${RUNTIME_PATH:-/volume1/docker/webpage}" # 기본값 설정
if [ -z "$DST" ]; then
echo "Error: RUNTIME_PATH is not set."
exit 1
fi
fi
echo "Source: $SRC"
echo "Target: $DST"
git config --global --add safe.directory "$SRC"
cd "$SRC"
git fetch --all --prune
git pull --ff-only
# 릴리즈 백업(롤백용): 아래 5번과 연결
TAG="$(date +%Y%m%d-%H%M%S)"
mkdir -p "$DST/.releases/$TAG"
rsync -a --delete \
--exclude ".releases" \
"$DST/" "$DST/.releases/$TAG/"
# 소스 → 운영 반영 (네가 이미 만든 deploy-nas.sh가 있으면 그걸 호출해도 됨)
# 예: repo/scripts/deploy-nas.sh가 운영으로 복사/동기화하는 로직이라면:
bash "$SRC/scripts/deploy-nas.sh"
cd "$DST"
docker-compose up -d --build backend travel-proxy stock-lab frontend
# [Permission Fix]
# deployer가 root로 돌면서 생성한 파일들의 소유권을 호스트 사용자로 변경
# .env에 정의된 PUID:PGID가 있으면 사용, 없으면 1000:1000
TARGET_UID=$(grep PUID .env | cut -d '=' -f2 || echo 1000)
TARGET_GID=$(grep PGID .env | cut -d '=' -f2 || echo 1000)
echo "Fixing permissions to $TARGET_UID:$TARGET_GID ..."
chown -R "$TARGET_UID:$TARGET_GID" "$DST" || true
chmod -R 755 "$DST" || true
# Repo 쪽도 혹시 모르니
if [ "$SRC" != "$DST" ]; then
chown -R "$TARGET_UID:$TARGET_GID" "$SRC" || true
chmod -R 755 "$SRC" || true
fi
echo "DEPLOY_OK $TAG"