-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy-remote.sh
More file actions
executable file
·95 lines (78 loc) · 3.83 KB
/
Copy pathdeploy-remote.sh
File metadata and controls
executable file
·95 lines (78 loc) · 3.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/bin/bash
# 서버에서 실행되는 배포 스크립트
# docker-compose 기반으로 실행
set -e
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🚀 Momen 원격 서버 배포"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# ── Docker 접근 확인 ────────────────────────────────────────
echo ""
echo "🔧 Docker 데몬 접근 확인..."
docker info >/dev/null 2>&1 || { echo "❌ Docker 접근 실패"; exit 1; }
echo "✅ Docker 접근 가능"
# ── 이미지 로드 (tar 파일이 있는 경우) ──────────────────────
if [ -f "momen-image.tar" ]; then
echo ""
echo "📦 Docker 이미지 로드 중..."
docker load -i momen-image.tar
rm -f momen-image.tar
echo "✅ 이미지 로드 완료"
fi
# ── 환경 변수 파일 확인 ────────────────────────────────────
if [ -f "momen.env" ] && [ ! -f ".env" ]; then
cp momen.env .env
echo "📋 momen.env → .env 복사"
fi
if [ ! -f ".env" ]; then
echo "❌ .env 파일이 없습니다. 배포를 중단합니다."
exit 1
fi
# ── docker-compose.yml 확인 ────────────────────────────────
if [ ! -f "docker-compose.yml" ]; then
echo "❌ docker-compose.yml 파일이 없습니다. 배포를 중단합니다."
exit 1
fi
# ── 기존 컨테이너 정리 및 docker-compose 실행 ──────────────
echo ""
echo "🛑 기존 컨테이너 정리 중..."
docker-compose down 2>/dev/null || true
# 이름 충돌 방지
docker stop momen momen-api momen-redis 2>/dev/null || true
docker rm momen momen-api momen-redis 2>/dev/null || true
echo ""
echo "🚀 Docker Compose 실행 중..."
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
docker-compose up -d
# ── 배포 결과 확인 ──────────────────────────────────────────
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📊 배포 결과 확인"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "📦 실행 중인 컨테이너:"
docker-compose ps
echo ""
echo "📋 앱 컨테이너 로그 (최근 30줄):"
docker-compose logs --tail=30 app 2>&1
# 헬스 체크
echo ""
echo "🏥 헬스 체크 (30초 대기)..."
sleep 30
if docker ps | grep -q "momen-api"; then
SERVER_IP=$(hostname -I | awk '{print $1}' 2>/dev/null || echo "100.50.98.194")
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🎉 배포 완료!"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "🌐 애플리케이션: http://$SERVER_IP:8089"
echo "📋 로그 확인: docker-compose logs -f app"
echo "🛑 중지 명령: docker-compose down"
echo "🔄 재시작 명령: docker-compose restart app"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
else
echo "❌ 컨테이너가 실행되지 않았습니다"
echo "📋 전체 로그:"
docker-compose logs app 2>&1
exit 1
fi