配置更新

This commit is contained in:
2025-10-26 20:10:00 +08:00
parent accd1ae9da
commit 85e910fac9
41 changed files with 334 additions and 330 deletions
+22 -22
View File
@@ -9,7 +9,7 @@
set +e
# 配置变量 - 支持Jenkins环境变量覆盖
REMOTE_HOST="${DEPLOY_HOST:-'root@47.111.10.27'}"
REMOTE_HOST="${DEPLOY_HOST:-'root@101.200.208.45'}"
REMOTE_BUILD_DIR="${REMOTE_BUILD_DIR:-/data/builds}"
REMOTE_DOCKER_COMPOSE_DIR="${REMOTE_DOCKER_DIR:-/data/docker}"
PROFILE="${DEPLOY_ENV:-test}"
@@ -80,10 +80,10 @@ FAILED_DEPLOYMENTS=0
# 检查远程服务器连接
check_remote_connection() {
log_info "检查远程服务器连接..."
if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then
if ssh -o ConnectTimeout=10 'root@101.200.208.45' "echo 'Connection successful'" > /dev/null 2>&1; then
log_success "远程服务器连接正常"
else
log_error "无法连接到远程服务器 'root@47.111.10.27'"
log_error "无法连接到远程服务器 'root@101.200.208.45'"
exit 1
fi
}
@@ -91,7 +91,7 @@ check_remote_connection() {
# 创建远程目录
create_remote_directories() {
log_info "创建远程目录结构..."
ssh 'root@47.111.10.27' "
ssh 'root@101.200.208.45' "
mkdir -p $REMOTE_BUILD_DIR
mkdir -p $REMOTE_DOCKER_COMPOSE_DIR
mkdir -p /data/logs/emotion-museum
@@ -187,15 +187,15 @@ transfer_jar_to_remote() {
# 删除远程旧jar包
log_info "清理远程旧jar包: $service_name"
ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${service_name}-*.jar"
ssh 'root@101.200.208.45' "rm -f $REMOTE_BUILD_DIR/${service_name}-*.jar"
# 上传新jar包
log_info "上传jar包到远程服务器..."
if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${service_name}-1.0.0.jar; then
if scp "$jar_file" 'root@101.200.208.45':$REMOTE_BUILD_DIR/${service_name}-1.0.0.jar; then
log_success "jar包传输成功: $service_name"
# 验证远程jar包
local remote_size=$(ssh 'root@47.111.10.27' "du -h $REMOTE_BUILD_DIR/${service_name}-1.0.0.jar | cut -f1")
local remote_size=$(ssh 'root@101.200.208.45' "du -h $REMOTE_BUILD_DIR/${service_name}-1.0.0.jar | cut -f1")
log_info "远程jar包大小: $remote_size"
return 0
else
@@ -220,7 +220,7 @@ deploy_service() {
# 验证远程jar包存在
log_info "验证远程jar包: $service_name"
if ! ssh 'root@47.111.10.27' "test -f $REMOTE_BUILD_DIR/${service_name}-1.0.0.jar"; then
if ! ssh 'root@101.200.208.45' "test -f $REMOTE_BUILD_DIR/${service_name}-1.0.0.jar"; then
local error_msg="远程jar包不存在,请先执行构建和传输"
log_error "$error_msg"
DEPLOYMENT_STATUS[$service_name]="FAILED"
@@ -233,7 +233,7 @@ deploy_service() {
# 停止并删除旧容器
log_info "停止旧容器: $service_name"
ssh 'root@47.111.10.27' "
ssh 'root@101.200.208.45' "
docker stop ${service_name} 2>/dev/null || true
docker rm ${service_name} 2>/dev/null || true
docker rmi ${PROJECT_NAME}/${service_name}:latest 2>/dev/null || true
@@ -241,7 +241,7 @@ deploy_service() {
# 构建Docker镜像
log_info "构建Docker镜像: $service_name"
ssh 'root@47.111.10.27' "
ssh 'root@101.200.208.45' "
# 复制jar包到Docker构建目录
cp $REMOTE_BUILD_DIR/${service_name}-1.0.0.jar $REMOTE_DOCKER_COMPOSE_DIR/
@@ -255,23 +255,23 @@ deploy_service() {
# 启动新容器
log_info "启动新容器: $service_name"
ssh 'root@47.111.10.27' "
ssh 'root@101.200.208.45' "
docker run -d \\
--name ${service_name} \\
--network emotion-network \\
-p ${service_port}:${service_port} \\
-v /data/logs/emotion-museum:/app/logs \\
-e SPRING_PROFILES_ACTIVE=${PROFILE} \\
-e MYSQL_HOST=47.111.10.27 \\
-e MYSQL_HOST=101.200.208.45 \\
-e MYSQL_PORT=3306 \\
-e MYSQL_DATABASE=emotion_museum \\
-e MYSQL_USERNAME=root \\
-e MYSQL_PASSWORD='EmotionMuseum2025*#' \\
-e REDIS_HOST=47.111.10.27 \\
-e REDIS_HOST=101.200.208.45 \\
-e REDIS_PORT=6379 \\
-e REDIS_PASSWORD= \\
-e REDIS_DATABASE=0 \\
-e NACOS_SERVER_ADDR=47.111.10.27:8848 \\
-e NACOS_SERVER_ADDR=101.200.208.45:8848 \\
-e NACOS_USERNAME=nacos \\
-e NACOS_PASSWORD='Peanut2817*#' \\
--restart unless-stopped \\
@@ -283,12 +283,12 @@ deploy_service() {
sleep 10
# 检查容器状态
if ssh 'root@47.111.10.27' "docker ps | grep ${service_name}" > /dev/null 2>&1; then
if ssh 'root@101.200.208.45' "docker ps | grep ${service_name}" > /dev/null 2>&1; then
log_success "服务 $service_name 启动成功"
# 显示容器日志
log_info "显示服务日志 最后10行: $service_name"
ssh 'root@47.111.10.27' "docker logs --tail 10 ${service_name}" 2>/dev/null || true
ssh 'root@101.200.208.45' "docker logs --tail 10 ${service_name}" 2>/dev/null || true
# 记录成功状态
local end_time=$(date +%s)
@@ -300,7 +300,7 @@ deploy_service() {
local error_msg="服务启动失败"
log_error "服务 $service_name 启动失败"
log_error "错误日志:"
local error_logs=$(ssh 'root@47.111.10.27' "docker logs ${service_name}" 2>&1 || echo "无法获取日志")
local error_logs=$(ssh 'root@101.200.208.45' "docker logs ${service_name}" 2>&1 || echo "无法获取日志")
echo "$error_logs"
# 记录失败状态
@@ -320,7 +320,7 @@ create_dockerfile() {
log_info "创建Dockerfile: $service_name"
ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${service_name} << 'EOF'
ssh 'root@101.200.208.45' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${service_name} << 'EOF'
# 使用Java 17 Alpine镜像
FROM openjdk:17-alpine
@@ -355,7 +355,7 @@ EOF"
# 创建Docker网络
create_docker_network() {
log_info "创建Docker网络..."
ssh 'root@47.111.10.27' "
ssh 'root@101.200.208.45' "
docker network create emotion-network 2>/dev/null || true
"
log_success "Docker网络创建完成"
@@ -374,7 +374,7 @@ health_check() {
# 等待服务完全启动
sleep 5
if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${service_port}/actuator/health" > /dev/null 2>&1; then
if ssh 'root@101.200.208.45' "curl -f -s http://localhost:${service_port}/actuator/health" > /dev/null 2>&1; then
log_success "服务 $service_name 健康检查通过"
else
log_warning "服务 $service_name 健康检查失败,可能仍在启动中"
@@ -422,7 +422,7 @@ show_deployment_report() {
case $status in
"SUCCESS")
printf "%-20s ${GREEN}%-10s${NC} %-10s %s\n" "$service_name" "✅ 成功" "$time" "http://47.111.10.27:$service_port"
printf "%-20s ${GREEN}%-10s${NC} %-10s %s\n" "$service_name" "✅ 成功" "$time" "http://101.200.208.45:$service_port"
;;
"FAILED")
printf "%-20s ${RED}%-10s${NC} %-10s %s\n" "$service_name" "❌ 失败" "$time" "查看错误日志"
@@ -452,7 +452,7 @@ show_deployment_report() {
# 显示当前运行的容器状态
echo "🐳 当前容器运行状态:"
echo "----------------------------------------"
ssh 'root@47.111.10.27' "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep emotion || echo '没有运行的emotion相关容器'"
ssh 'root@101.200.208.45' "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep emotion || echo '没有运行的emotion相关容器'"
echo ""
echo "========================================"