feat: 项目初始化及当前全部内容提交
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 情绪博物馆容器部署脚本
|
||||
# 作者: EmotionMuseum Team
|
||||
# 版本: 1.0.0
|
||||
# 日期: 2025-07-13
|
||||
|
||||
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 "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
log_warn() {
|
||||
echo -e "${YELLOW}[WARN]${NC} $1"
|
||||
}
|
||||
|
||||
log_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
log_step() {
|
||||
echo -e "${BLUE}[STEP]${NC} $1"
|
||||
}
|
||||
|
||||
# 检查Docker和Docker Compose
|
||||
check_requirements() {
|
||||
log_step "检查系统要求..."
|
||||
|
||||
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_info "Docker和Docker Compose检查通过"
|
||||
}
|
||||
|
||||
# 创建必要的目录
|
||||
create_directories() {
|
||||
log_step "创建部署目录..."
|
||||
|
||||
mkdir -p deploy/{mysql/conf.d,redis,nginx/{conf.d,ssl},logs}
|
||||
mkdir -p data/{mysql,redis,nacos}
|
||||
|
||||
log_info "目录创建完成"
|
||||
}
|
||||
|
||||
# 生成配置文件
|
||||
generate_configs() {
|
||||
log_step "生成配置文件..."
|
||||
|
||||
# MySQL配置
|
||||
if [ ! -f "deploy/mysql/conf.d/my.cnf" ]; then
|
||||
cat > deploy/mysql/conf.d/my.cnf << 'EOF'
|
||||
[mysqld]
|
||||
character-set-server=utf8mb4
|
||||
collation-server=utf8mb4_unicode_ci
|
||||
default-time-zone='+8:00'
|
||||
max_connections=1000
|
||||
max_allowed_packet=64M
|
||||
innodb_buffer_pool_size=512M
|
||||
innodb_log_file_size=256M
|
||||
slow_query_log=1
|
||||
slow_query_log_file=/var/log/mysql/slow.log
|
||||
long_query_time=2
|
||||
EOF
|
||||
log_info "MySQL配置文件已生成"
|
||||
fi
|
||||
|
||||
# Redis配置
|
||||
if [ ! -f "deploy/redis/redis.conf" ]; then
|
||||
cat > deploy/redis/redis.conf << 'EOF'
|
||||
bind 0.0.0.0
|
||||
port 6379
|
||||
timeout 300
|
||||
tcp-keepalive 60
|
||||
maxmemory 256mb
|
||||
maxmemory-policy allkeys-lru
|
||||
save 900 1
|
||||
save 300 10
|
||||
save 60 10000
|
||||
appendonly yes
|
||||
appendfsync everysec
|
||||
EOF
|
||||
log_info "Redis配置文件已生成"
|
||||
fi
|
||||
}
|
||||
|
||||
# 构建镜像
|
||||
build_images() {
|
||||
log_step "构建Docker镜像..."
|
||||
|
||||
log_info "构建后端服务镜像..."
|
||||
docker-compose build gateway ai-service user-service
|
||||
|
||||
log_info "构建前端应用镜像..."
|
||||
docker-compose build web
|
||||
|
||||
log_info "镜像构建完成"
|
||||
}
|
||||
|
||||
# 启动服务
|
||||
start_services() {
|
||||
log_step "启动服务..."
|
||||
|
||||
# 先启动基础服务
|
||||
log_info "启动基础服务 (MySQL, Redis, Nacos)..."
|
||||
docker-compose up -d mysql redis nacos
|
||||
|
||||
# 等待基础服务启动
|
||||
log_info "等待基础服务启动完成..."
|
||||
sleep 30
|
||||
|
||||
# 启动应用服务
|
||||
log_info "启动应用服务..."
|
||||
docker-compose up -d gateway ai-service user-service
|
||||
|
||||
# 等待应用服务启动
|
||||
log_info "等待应用服务启动完成..."
|
||||
sleep 20
|
||||
|
||||
# 启动前端和Nginx
|
||||
log_info "启动前端和Nginx..."
|
||||
docker-compose up -d web nginx
|
||||
|
||||
log_info "所有服务启动完成"
|
||||
}
|
||||
|
||||
# 检查服务状态
|
||||
check_services() {
|
||||
log_step "检查服务状态..."
|
||||
|
||||
echo ""
|
||||
docker-compose ps
|
||||
echo ""
|
||||
|
||||
# 检查关键服务健康状态
|
||||
log_info "检查服务健康状态..."
|
||||
|
||||
# 检查MySQL
|
||||
if docker-compose exec -T mysql mysqladmin ping -h localhost -u root -p123456 &> /dev/null; then
|
||||
log_info "✅ MySQL服务正常"
|
||||
else
|
||||
log_warn "❌ MySQL服务异常"
|
||||
fi
|
||||
|
||||
# 检查Redis
|
||||
if docker-compose exec -T redis redis-cli ping | grep -q PONG; then
|
||||
log_info "✅ Redis服务正常"
|
||||
else
|
||||
log_warn "❌ Redis服务异常"
|
||||
fi
|
||||
|
||||
# 检查Nacos
|
||||
if curl -s http://localhost:8848/nacos/v1/ns/operator/metrics &> /dev/null; then
|
||||
log_info "✅ Nacos服务正常"
|
||||
else
|
||||
log_warn "❌ Nacos服务异常"
|
||||
fi
|
||||
|
||||
# 检查网关
|
||||
if curl -s http://localhost:9000/actuator/health &> /dev/null; then
|
||||
log_info "✅ 网关服务正常"
|
||||
else
|
||||
log_warn "❌ 网关服务异常"
|
||||
fi
|
||||
}
|
||||
|
||||
# 显示访问信息
|
||||
show_access_info() {
|
||||
log_step "部署完成!"
|
||||
|
||||
echo ""
|
||||
echo "🎉 情绪博物馆部署成功!"
|
||||
echo ""
|
||||
echo "📱 访问地址:"
|
||||
echo " 前端应用: http://localhost"
|
||||
echo " API网关: http://localhost:9000"
|
||||
echo " Nacos: http://localhost:8848/nacos (用户名/密码: nacos/nacos)"
|
||||
echo ""
|
||||
echo "🔧 管理命令:"
|
||||
echo " 查看日志: docker-compose logs -f [服务名]"
|
||||
echo " 停止服务: docker-compose down"
|
||||
echo " 重启服务: docker-compose restart [服务名]"
|
||||
echo ""
|
||||
echo "📊 监控命令:"
|
||||
echo " 查看状态: docker-compose ps"
|
||||
echo " 查看资源: docker stats"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# 主函数
|
||||
main() {
|
||||
echo "🚀 开始部署情绪博物馆..."
|
||||
echo ""
|
||||
|
||||
check_requirements
|
||||
create_directories
|
||||
generate_configs
|
||||
build_images
|
||||
start_services
|
||||
|
||||
echo ""
|
||||
log_info "等待服务完全启动..."
|
||||
sleep 10
|
||||
|
||||
check_services
|
||||
show_access_info
|
||||
}
|
||||
|
||||
# 处理命令行参数
|
||||
case "${1:-}" in
|
||||
"build")
|
||||
log_info "仅构建镜像..."
|
||||
check_requirements
|
||||
create_directories
|
||||
generate_configs
|
||||
build_images
|
||||
;;
|
||||
"start")
|
||||
log_info "启动服务..."
|
||||
start_services
|
||||
check_services
|
||||
show_access_info
|
||||
;;
|
||||
"stop")
|
||||
log_info "停止服务..."
|
||||
docker-compose down
|
||||
;;
|
||||
"restart")
|
||||
log_info "重启服务..."
|
||||
docker-compose restart
|
||||
check_services
|
||||
;;
|
||||
"logs")
|
||||
docker-compose logs -f
|
||||
;;
|
||||
"status")
|
||||
check_services
|
||||
;;
|
||||
*)
|
||||
main
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user