205 lines
4.6 KiB
Bash
205 lines
4.6 KiB
Bash
|
|
#!/bin/bash
|
|||
|
|
# TSP智能助手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"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 检查Docker和Docker Compose
|
|||
|
|
check_dependencies() {
|
|||
|
|
log_info "检查依赖..."
|
|||
|
|
|
|||
|
|
if ! command -v docker &> /dev/null; then
|
|||
|
|
log_error "Docker未安装,请先安装Docker"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
if ! command -v docker-compose &> /dev/null; then
|
|||
|
|
log_error "Docker Compose未安装,请先安装Docker Compose"
|
|||
|
|
exit 1
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
log_success "依赖检查通过"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 创建必要的目录
|
|||
|
|
create_directories() {
|
|||
|
|
log_info "创建必要的目录..."
|
|||
|
|
|
|||
|
|
mkdir -p logs/nginx
|
|||
|
|
mkdir -p monitoring/grafana/provisioning/datasources
|
|||
|
|
mkdir -p monitoring/grafana/provisioning/dashboards
|
|||
|
|
mkdir -p ssl
|
|||
|
|
mkdir -p data
|
|||
|
|
mkdir -p backups
|
|||
|
|
mkdir -p uploads
|
|||
|
|
mkdir -p config
|
|||
|
|
|
|||
|
|
log_success "目录创建完成"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 构建镜像
|
|||
|
|
build_images() {
|
|||
|
|
log_info "构建Docker镜像..."
|
|||
|
|
|
|||
|
|
# 构建主应用镜像
|
|||
|
|
docker-compose build --no-cache tsp-assistant
|
|||
|
|
|
|||
|
|
log_success "镜像构建完成"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 启动服务
|
|||
|
|
start_services() {
|
|||
|
|
log_info "启动服务..."
|
|||
|
|
|
|||
|
|
# 启动基础服务(MySQL, Redis)
|
|||
|
|
docker-compose up -d mysql redis
|
|||
|
|
|
|||
|
|
# 等待数据库启动
|
|||
|
|
log_info "等待数据库启动..."
|
|||
|
|
sleep 30
|
|||
|
|
|
|||
|
|
# 启动主应用
|
|||
|
|
docker-compose up -d tsp-assistant
|
|||
|
|
|
|||
|
|
# 启动其他服务
|
|||
|
|
docker-compose up -d nginx prometheus grafana
|
|||
|
|
|
|||
|
|
log_success "服务启动完成"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 检查服务状态
|
|||
|
|
check_services() {
|
|||
|
|
log_info "检查服务状态..."
|
|||
|
|
|
|||
|
|
sleep 10
|
|||
|
|
|
|||
|
|
# 检查主应用
|
|||
|
|
if curl -f http://localhost:5000/api/health &> /dev/null; then
|
|||
|
|
log_success "TSP助手服务正常"
|
|||
|
|
else
|
|||
|
|
log_warning "TSP助手服务可能未完全启动"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查Nginx
|
|||
|
|
if curl -f http://localhost/health &> /dev/null; then
|
|||
|
|
log_success "Nginx服务正常"
|
|||
|
|
else
|
|||
|
|
log_warning "Nginx服务可能未完全启动"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查Prometheus
|
|||
|
|
if curl -f http://localhost:9090 &> /dev/null; then
|
|||
|
|
log_success "Prometheus服务正常"
|
|||
|
|
else
|
|||
|
|
log_warning "Prometheus服务可能未完全启动"
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# 检查Grafana
|
|||
|
|
if curl -f http://localhost:3000 &> /dev/null; then
|
|||
|
|
log_success "Grafana服务正常"
|
|||
|
|
else
|
|||
|
|
log_warning "Grafana服务可能未完全启动"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 显示服务信息
|
|||
|
|
show_info() {
|
|||
|
|
log_info "服务访问信息:"
|
|||
|
|
echo " TSP助手: http://localhost:5000"
|
|||
|
|
echo " Nginx代理: http://localhost"
|
|||
|
|
echo " Prometheus: http://localhost:9090"
|
|||
|
|
echo " Grafana: http://localhost:3000 (admin/admin123456)"
|
|||
|
|
echo " MySQL: localhost:3306 (root/root123456)"
|
|||
|
|
echo " Redis: localhost:6379 (密码: redis123456)"
|
|||
|
|
echo ""
|
|||
|
|
log_info "查看日志命令:"
|
|||
|
|
echo " docker-compose logs -f tsp-assistant"
|
|||
|
|
echo " docker-compose logs -f mysql"
|
|||
|
|
echo " docker-compose logs -f redis"
|
|||
|
|
echo " docker-compose logs -f nginx"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 停止服务
|
|||
|
|
stop_services() {
|
|||
|
|
log_info "停止服务..."
|
|||
|
|
docker-compose down
|
|||
|
|
log_success "服务已停止"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 清理资源
|
|||
|
|
cleanup() {
|
|||
|
|
log_info "清理Docker资源..."
|
|||
|
|
docker system prune -f
|
|||
|
|
log_success "清理完成"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 主函数
|
|||
|
|
main() {
|
|||
|
|
case "${1:-start}" in
|
|||
|
|
"start")
|
|||
|
|
check_dependencies
|
|||
|
|
create_directories
|
|||
|
|
build_images
|
|||
|
|
start_services
|
|||
|
|
check_services
|
|||
|
|
show_info
|
|||
|
|
;;
|
|||
|
|
"stop")
|
|||
|
|
stop_services
|
|||
|
|
;;
|
|||
|
|
"restart")
|
|||
|
|
stop_services
|
|||
|
|
sleep 5
|
|||
|
|
start_services
|
|||
|
|
check_services
|
|||
|
|
show_info
|
|||
|
|
;;
|
|||
|
|
"cleanup")
|
|||
|
|
stop_services
|
|||
|
|
cleanup
|
|||
|
|
;;
|
|||
|
|
"logs")
|
|||
|
|
docker-compose logs -f "${2:-tsp-assistant}"
|
|||
|
|
;;
|
|||
|
|
"status")
|
|||
|
|
docker-compose ps
|
|||
|
|
;;
|
|||
|
|
*)
|
|||
|
|
echo "用法: $0 {start|stop|restart|cleanup|logs|status}"
|
|||
|
|
echo " start - 启动所有服务"
|
|||
|
|
echo " stop - 停止所有服务"
|
|||
|
|
echo " restart - 重启所有服务"
|
|||
|
|
echo " cleanup - 清理Docker资源"
|
|||
|
|
echo " logs - 查看日志 (可选指定服务名)"
|
|||
|
|
echo " status - 查看服务状态"
|
|||
|
|
exit 1
|
|||
|
|
;;
|
|||
|
|
esac
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 执行主函数
|
|||
|
|
main "$@"
|