-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathdeploy-docker.sh
More file actions
83 lines (65 loc) Β· 2.35 KB
/
Copy pathdeploy-docker.sh
File metadata and controls
83 lines (65 loc) Β· 2.35 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
#!/bin/bash
# μμ μ μ
GREEN='\033[0;32m'
BLUE='\033[0;34m'
RED='\033[0;31m'
NC='\033[0m' # No Color
echo -e "${BLUE}π³ Docker κΈ°λ° λ¬΄μ€λ¨ λ°°ν¬ μμ${NC}"
# 컨ν
μ΄λ μ΄λ¦
CONTAINER_NAME="bamboo-server"
IMAGE_NAME="jinseok19/bamboo-server:latest"
# νμ¬ μ€ν μ€μΈ 컨ν
μ΄λ νμΈ
RUNNING_CONTAINER=$(docker ps -q --filter "name=${CONTAINER_NAME}")
if [ -n "$RUNNING_CONTAINER" ]; then
echo -e "${BLUE}πΉ νμ¬ μ€ν μ€μΈ 컨ν
μ΄λ: ${RUNNING_CONTAINER}${NC}"
# λΈλ£¨-κ·Έλ¦° λ°°ν¬λ₯Ό μν μ 컨ν
μ΄λ μ΄λ¦
NEW_CONTAINER="${CONTAINER_NAME}-new"
OLD_CONTAINER="${CONTAINER_NAME}"
else
echo -e "${BLUE}πΉ μ€ν μ€μΈ 컨ν
μ΄λ μμ. μλ‘ μμν©λλ€.${NC}"
NEW_CONTAINER="${CONTAINER_NAME}"
fi
# μ΅μ μ΄λ―Έμ§ Pull
echo -e "${BLUE}πΉ μ΅μ Docker μ΄λ―Έμ§ λ€μ΄λ‘λ μ€...${NC}"
docker pull ${IMAGE_NAME}
# νκ²½ λ³μ νμΌ νμΈ
if [ ! -f "/home/ubuntu/.env" ]; then
echo -e "${RED}β .env νμΌμ΄ μμ΅λλ€!${NC}"
exit 1
fi
# μ 컨ν
μ΄λ μμ
echo -e "${BLUE}πΉ μ 컨ν
μ΄λ μμ μ€...${NC}"
docker run -d \
--name ${NEW_CONTAINER} \
--env-file /home/ubuntu/.env \
-p 8080:8080 \
--restart unless-stopped \
${IMAGE_NAME}
# 컨ν
μ΄λ μμ λκΈ°
echo -e "${BLUE}Ⳡ컨ν
μ΄λ μμ λκΈ° μ€...${NC}"
sleep 10
# Health check
for i in {1..10}; do
echo -e "${BLUE}β³ Health check μλ ($i/10)${NC}"
if curl -f http://localhost:8080/health > /dev/null 2>&1; then
echo -e "${GREEN}β
μ 컨ν
μ΄λ μ μ μλ!${NC}"
# κΈ°μ‘΄ 컨ν
μ΄λ μ’
λ£
if [ -n "$RUNNING_CONTAINER" ] && [ "$NEW_CONTAINER" != "$CONTAINER_NAME" ]; then
echo -e "${BLUE}π κΈ°μ‘΄ 컨ν
μ΄λ μ’
λ£ μ€...${NC}"
docker stop ${OLD_CONTAINER}
docker rm ${OLD_CONTAINER}
# μ 컨ν
μ΄λ μ΄λ¦ λ³κ²½
docker rename ${NEW_CONTAINER} ${CONTAINER_NAME}
fi
echo -e "${GREEN}π λ°°ν¬ μ±κ³΅!${NC}"
docker ps --filter "name=${CONTAINER_NAME}"
exit 0
fi
sleep 3
done
# Health check μ€ν¨
echo -e "${RED}β Health check μ€ν¨! λ‘€λ°±ν©λλ€.${NC}"
docker stop ${NEW_CONTAINER}
docker rm ${NEW_CONTAINER}
echo -e "${RED}β λ°°ν¬ μ€ν¨! κΈ°μ‘΄ 컨ν
μ΄λ μ μ§.${NC}"
exit 1