-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-scripts.sh
More file actions
executable file
·205 lines (184 loc) · 5.34 KB
/
docker-scripts.sh
File metadata and controls
executable file
·205 lines (184 loc) · 5.34 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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
#!/bin/bash
# CallGuard Docker管理スクリプト
set -e
# 色付きログ出力
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
log_info() {
echo -e "${BLUE}[INFO]${NC} $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 開発環境の起動
dev_up() {
log_info "Starting CallGuard development environment..."
docker-compose --env-file .env.docker up -d
log_success "Development environment started!"
log_info "Frontend: http://localhost:8081"
log_info "Backend API: http://localhost:3000"
log_info "MongoDB: localhost:27017"
log_info "Redis: localhost:6379"
}
# 本番環境の起動
prod_up() {
log_info "Starting CallGuard production environment..."
docker-compose -f docker-compose.prod.yml --env-file .env.docker up -d
log_success "Production environment started!"
log_info "Application: http://localhost"
log_info "Monitoring: http://localhost:9090"
}
# 環境の停止
down() {
log_info "Stopping CallGuard environment..."
docker-compose down
docker-compose -f docker-compose.prod.yml down 2>/dev/null || true
log_success "Environment stopped!"
}
# 環境の再起動
restart() {
log_info "Restarting CallGuard environment..."
down
sleep 2
dev_up
}
# ログの表示
logs() {
local service=${1:-}
if [ -z "$service" ]; then
docker-compose logs -f
else
docker-compose logs -f "$service"
fi
}
# データベースのバックアップ
backup() {
log_info "Creating database backup..."
local backup_file="backup/callguard-backup-$(date +%Y%m%d_%H%M%S).gz"
mkdir -p backup
docker-compose exec mongodb mongodump --authenticationDatabase admin -u admin -p password123 --db callguard --gzip --archive=/backup/$(basename $backup_file)
docker cp callguard-mongodb:/backup/$(basename $backup_file) $backup_file
log_success "Backup created: $backup_file"
}
# データベースのリストア
restore() {
local backup_file=$1
if [ -z "$backup_file" ]; then
log_error "Please specify backup file: ./docker-scripts.sh restore <backup-file>"
exit 1
fi
if [ ! -f "$backup_file" ]; then
log_error "Backup file not found: $backup_file"
exit 1
fi
log_info "Restoring database from: $backup_file"
docker cp $backup_file callguard-mongodb:/backup/restore.gz
docker-compose exec mongodb mongorestore --authenticationDatabase admin -u admin -p password123 --db callguard --gzip --archive=/backup/restore.gz --drop
log_success "Database restored successfully!"
}
# システムの状態確認
status() {
log_info "CallGuard System Status:"
echo ""
docker-compose ps
echo ""
log_info "Health Checks:"
docker-compose exec backend curl -f http://localhost:3000/api/health 2>/dev/null && log_success "Backend: Healthy" || log_error "Backend: Unhealthy"
docker-compose exec mongodb mongosh --eval "db.runCommand('ping')" --quiet 2>/dev/null && log_success "MongoDB: Healthy" || log_error "MongoDB: Unhealthy"
docker-compose exec redis redis-cli ping 2>/dev/null && log_success "Redis: Healthy" || log_error "Redis: Unhealthy"
}
# イメージのビルド
build() {
log_info "Building CallGuard images..."
docker-compose build --no-cache
log_success "Images built successfully!"
}
# システムのクリーンアップ
clean() {
log_warning "This will remove all containers, images, and volumes. Are you sure? (y/N)"
read -r response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]]; then
log_info "Cleaning up CallGuard system..."
docker-compose down -v --rmi all
docker system prune -f
log_success "System cleaned up!"
else
log_info "Cleanup cancelled."
fi
}
# 使用方法の表示
usage() {
echo "CallGuard Docker Management Script"
echo ""
echo "Usage: $0 [COMMAND]"
echo ""
echo "Commands:"
echo " dev-up Start development environment"
echo " prod-up Start production environment"
echo " down Stop all services"
echo " restart Restart development environment"
echo " logs [svc] Show logs (optionally for specific service)"
echo " backup Create database backup"
echo " restore Restore database from backup"
echo " status Show system status"
echo " build Build all images"
echo " clean Clean up system (removes all data)"
echo " help Show this help message"
echo ""
echo "Examples:"
echo " $0 dev-up"
echo " $0 logs backend"
echo " $0 backup"
echo " $0 restore backup/callguard-backup-20231201_120000.gz"
}
# メイン処理
case "${1:-}" in
"dev-up")
dev_up
;;
"prod-up")
prod_up
;;
"down")
down
;;
"restart")
restart
;;
"logs")
logs "$2"
;;
"backup")
backup
;;
"restore")
restore "$2"
;;
"status")
status
;;
"build")
build
;;
"clean")
clean
;;
"help"|"--help"|"-h")
usage
;;
*)
log_error "Unknown command: ${1:-}"
echo ""
usage
exit 1
;;
esac