-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathdeploy.sh
67 lines (55 loc) · 2.09 KB
/
deploy.sh
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
#!/bin/bash
# 로그 디렉토리 및 백업 디렉토리 생성
mkdir -p /home/ubuntu/deploy/log/backup
PROJECT_ROOT="/home/ubuntu/deploy"
APP_LOG="$PROJECT_ROOT/log/application.log"
ERROR_LOG="$PROJECT_ROOT/log/error.log"
DEPLOY_LOG="$PROJECT_ROOT/log/deploy.log"
BACKUP_LOG_DIR="$PROJECT_ROOT/log/backup"
# 기존 로그 파일 백업
if [ -f "$DEPLOY_LOG" ]; then
mv "$DEPLOY_LOG" "$BACKUP_LOG_DIR/deploy.log.$(date +%Y%m%d_%H%M%S)"
fi
# 7일 이상된 백업 로그 파일 삭제
find "$BACKUP_LOG_DIR" -name "deploy.log.*" -type f -mtime +7 -exec rm -f {} \;
# 현재 실행중인 컨테이너 중지/삭제
{
echo "========================================"
echo "[$(date)] 현재 실행중인 Docker 컨테이너 확인"
CURRENT_CONTAINERS=$(sudo docker ps --format "{{.ID}} {{.Names}}")
if [ -z "$CURRENT_CONTAINERS" ]; then
echo "[$(date)] 현재 실행중인 Docker 컨테이너가 없으므로 종료하지 않습니다."
else
echo "$CURRENT_CONTAINERS" | while read -r PID NAME; do
echo "[$(date)] docker stop $NAME $PID"
sudo docker stop "$PID"
echo "[$(date)] docker rm $NAME $PID"
sudo docker rm "$PID"
done
sleep 5
echo "[$(date)] 모든 Docker 컨테이너가 중지 및 제거되었습니다."
fi
echo "========================================"
} >> "$DEPLOY_LOG"
# 새로운 컨테이너 시작 경로 설정
cd /home/ubuntu/deploy
# Docker Compose를 사용하여 새로운 컨테이너 시작 및 이미지 빌드
sudo docker-compose -f docker-compose.yml up --build -d
# 사용되지 않는 Docker 이미지 삭제
{
echo "[$(date)] 사용되지 않는 Docker 이미지를 삭제합니다."
sudo docker image prune -f
echo "========================================"
} >> "$DEPLOY_LOG"
# 새로운 컨테이너 시작
{
echo "[$(date)] 새로운 Docker 컨테이너가 시작되었습니다."
NEW_CONTAINERS=$(sudo docker ps --format "{{.ID}} {{.Names}}")
echo "$NEW_CONTAINERS" |
while
read -r PID NAME;
do
echo "[$(date)] docker run $NAME $PID"
done
echo "========================================"
} >> "$DEPLOY_LOG"