forked from Munhak-Zip/moviezip-server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy.sh
More file actions
97 lines (82 loc) ยท 2.59 KB
/
deploy.sh
File metadata and controls
97 lines (82 loc) ยท 2.59 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
96
97
#!/bin/bash
set -e
# ๋ก๊ทธ ํ์ผ ์์ฑ
LOG_DIR="/home/ec2-user/app/logs"
mkdir -p ${LOG_DIR}
exec > >(tee -i ${LOG_DIR}/deploy.log)
exec 2>&1
echo "Starting deployment..."
APP_NAME="moviezip-app"
IMAGE_NAME="moviezip-server:latest"
# .env ํ์ผ์ด ์์ผ๋ฉด ์ฝ์ด์ค๊ธฐ
ENV_FILE="/home/ec2-user/app/.env"
if [ -f ${ENV_FILE} ]; then
echo "Loading environment variables from ${ENV_FILE}"
export $(grep -v '^#' ${ENV_FILE} | xargs)
fi
# ํ์ ํ๊ฒฝ๋ณ์ ๊ธฐ๋ณธ๊ฐ (GitHub Actions์์ ์ ์ค๋ fail ๋ฐฉ์ง)
: "${SPRING_PROFILES_ACTIVE:=prod}"
: "${DB_URL:=jdbc:oracle:thin:@dblab.dongduk.ac.kr:1521/orclpdb}"
: "${DB_USERNAME:=ss240205}"
: "${DB_PASSWORD:=ss240205ss}"
: "${MONGODB_URI:=mongodb://moviezip-mongo:27017/movieZip}"
: "${REDIS_HOST:=redis}"
: "${REDIS_PORT:=6379}"
: "${JWT_SECRET:=VlwEyVBsYt9V7zq57TejMnVUyzblYcfPQye08f7MGVA9XkHa}"
# ํ๊ฒฝ๋ณ์ ํ์ธ
echo "=== Environment Variables ==="
echo "SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE}"
echo "DB_URL=${DB_URL}"
echo "DB_USERNAME=${DB_USERNAME}"
echo "DB_PASSWORD=${DB_PASSWORD}"
echo "MONGODB_URI=${MONGODB_URI}"
echo "REDIS_HOST=${REDIS_HOST}"
echo "REDIS_PORT=${REDIS_PORT}"
echo "JWT_SECRET=${JWT_SECRET}"
echo "============================="
# Docker ๋น๋
echo "Building Docker image..."
docker build -t ${IMAGE_NAME} /home/ec2-user/app
# Blue/Green ์ปจํ
์ด๋ ์ด๋ฆ ๋ฐ ํฌํธ
BLUE_NAME="${APP_NAME}-blue"
GREEN_NAME="${APP_NAME}-green"
BLUE_PORT=8081
GREEN_PORT=8082
# ์คํ ์ค์ธ ์ปจํ
์ด๋ ํ์ธ
RUNNING_BLUE=$(docker ps -q -f name=${BLUE_NAME})
RUNNING_GREEN=$(docker ps -q -f name=${GREEN_NAME})
# ๋ฐฐํฌํ ์ปจํ
์ด๋ ๊ฒฐ์
if [ -z "$RUNNING_BLUE" ]; then
DEPLOY_NAME=$BLUE_NAME
DEPLOY_PORT=$BLUE_PORT
STOP_NAME=$GREEN_NAME
echo "Deploying Blue..."
else
DEPLOY_NAME=$GREEN_NAME
DEPLOY_PORT=$GREEN_PORT
STOP_NAME=$BLUE_NAME
echo "Deploying Green..."
fi
# ์ด์ ์ปจํ
์ด๋ ์ข
๋ฃ
STOP_CONTAINER=$(docker ps -a -q -f name=${STOP_NAME})
if [ -n "$STOP_CONTAINER" ]; then
echo "Stopping old container: ${STOP_NAME}"
docker ps -a -f name=$STOP_NAME
docker rm -f $STOP_CONTAINER || true
fi
# ์ ์ปจํ
์ด๋ ์คํ
docker run -d --name ${DEPLOY_NAME} -p ${DEPLOY_PORT}:8080 \
-e SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE} \
-e DB_URL=${DB_URL} \
-e DB_USERNAME=${DB_USERNAME} \
-e DB_PASSWORD=${DB_PASSWORD} \
-e MONGODB_URI=${MONGODB_URI} \
-e REDIS_HOST=${REDIS_HOST} \
-e REDIS_PORT=${REDIS_PORT} \
-e JWT_SECRET=${JWT_SECRET} \
${IMAGE_NAME} \
java -jar /app/app.jar
sleep 10
# ๋ถํ์ํ ์ด๋ฏธ์ง ์ ๋ฆฌ
docker image prune -af
echo "Deployment completed!"