提交 619c85df authored 作者: 陈泽健's avatar 陈泽健

```

fix(deploy): 更新ARM架构中间件部署脚本

- 更新Docker版本从29.1.3到29.4.3
- 修复架构标识从arm_64更正为x86_64
- 重构FastDFS部署逻辑,简化为单容器部署
- 添加sudo权限自动检测和处理机制
- 更新FastDFS镜像路径和配置参数
- 修改Nacos和Nginx镜像文件名为ARM专用版本
- 优化容器状态检查和日志输出
- 统一使用SUDO变量处理权限问题
```
上级 b45d1e20
......@@ -16,16 +16,16 @@
#--------------------------------------------------------------#
# 依赖: tar, systemctl, sudo(通过 $sudoset)
# 注意: 请确保以下资源已提前上传:
# - /data/temp/docker-29.1.3.tgz
# - /data/temp/docker-29.4.3.tgz
# - /data/temp/docker.service
#==============================================================#
function docker_arm() {
log "INFO" "=================================================================="
log "INFO" "开始检查并安装 Docker (arm_64 离线模式)"
log "INFO" "开始检查并安装 Docker (x86_64 离线模式)"
log "INFO" "=================================================================="
# ------------------- 定义变量 -------------------
local docker_version="29.1.3"
local docker_version="29.4.3"
local temp_dir="/data/temp"
local tar_file="${temp_dir}/docker-${docker_version}.tgz"
local service_file="${temp_dir}/docker.service"
......@@ -117,6 +117,7 @@ function docker_arm() {
fi
}
#==============================================================#
# 函数名: mysql_arm
# 功能: 部署基于 Docker 的 MySQL 服务(arm 架构)
......@@ -509,22 +510,29 @@ vm.overcommit_memory = 1
}
#安装fastfds
function fastfds_arm()
{
function fastfds_arm() {
# ------------------- 定义变量 -------------------
local image_tar="/data/temp/ufastdfs-v2.tar.gz"
local image_name="ufastdfs:v2"
local tracker_container="utracker"
local storage_container="ustorage"
local tracker_host_dir="/data/storage/tracker"
local storage_host_dir="/data/storage/storage"
local container_name="utracker"
local image_tar="/data/temp/arm_fastdfs.tar"
local image_name="139.9.60.86:5000/ufastdfs:v2"
local image_id="ab3274a2b55f"
local host_data_dir="/data/storage/storage"
log "INFO" "=================================================================="
log "INFO" "开始部署 FastDFS 服务 (Docker 版, arm)"
log "INFO" "开始部署 FastDFS 服务 (Docker 版, ARM)"
log "INFO" "=================================================================="
# 自动判断是否需要 sudo
local SUDO=""
if [[ $(id -u) -ne 0 ]]; then
if command -v sudo >/dev/null; then
SUDO="sudo"
else
log "ERROR" "⛔ 当前不是 root 用户,且系统未安装 sudo,无法执行操作"
return 1
fi
fi
# 自动获取本机 IP(优先使用非 loopback 的 IPv4)
local host_ip
host_ip=$(ip -4 addr show scope global | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | head -n1)
......@@ -537,29 +545,16 @@ function fastfds_arm()
fi
log "INFO" "🌐 检测到本机 IP: $host_ip"
# ------------------- 检查两个容器是否都已运行 -------------------
# ------------------- 检查容器是否已运行 -------------------
log "INFO" "🔍 检查 FastDFS 容器是否已运行..."
local tracker_running=false
local storage_running=false
if $sudoset docker ps --format '{{.Names}}' | grep -wq "^$tracker_container$"; then
tracker_running=true
log "INFO" "✅ 容器 '$tracker_container' 已在运行。"
fi
if $sudoset docker ps --format '{{.Names}}' | grep -wq "^$storage_container$"; then
storage_running=true
log "INFO" "✅ 容器 '$storage_container' 已在运行。"
fi
if [[ "$tracker_running" == true && "$storage_running" == true ]]; then
log "INFO" "🎉 FastDFS 服务已全部运行,跳过安装。"
if $SUDO docker ps --format '{{.Names}}' | grep -wq "$container_name"; then
log "INFO" "✅ 容器 '$container_name' 已在运行。"
return 0
fi
# ------------------- 检查镜像是否存在 -------------------
log "INFO" "🔍 检查 FastDFS 镜像是否存在..."
if $sudoset docker images --format '{{.Repository}}:{{.Tag}}' | grep -wq "$image_name"; then
if $SUDO docker images --format '{{.Repository}}:{{.Tag}}' | grep -wq "$image_name"; then
log "INFO" "✅ 镜像 $image_name 已存在。"
else
log "WARN" "❌ 镜像 $image_name 不存在,开始加载离线包..."
......@@ -569,70 +564,56 @@ function fastfds_arm()
return 1
fi
if $sudoset docker load -i "$image_tar"; then
if $SUDO docker load -i "$image_tar"; then
log "INFO" "🎉 镜像加载成功"
else
log "ERROR" "⛔ 镜像加载失败,请检查文件完整性"
return 1
fi
fi
# ------------------- 启动 Tracker 容器 -------------------
if [[ "$tracker_running" == false ]]; then
log "INFO" "🚀 正在启动 Tracker 服务: $tracker_container ..."
$sudoset docker run -d \
--network=host \
--name "$tracker_container" \
--restart=always \
-v "$tracker_host_dir:/var/fdfs" \
-v "/etc/localtime:/etc/localtime:ro" \
"$image_name" \
tracker
# 打标签
if $SUDO docker tag "$image_id" "$image_name" 2>/dev/null; then
log "INFO" "✅ 镜像标签设置成功"
else
log "WARN" "⚠️ 镜像标签设置失败,可能已存在或ID不匹配"
fi
fi
if [ $? -ne 0 ]; then
log "ERROR" "⛔ Tracker 容器启动失败"
# ------------------- 准备宿主机目录 -------------------
log "INFO" "📁 创建宿主机数据目录..."
if ! $SUDO mkdir -p "$host_data_dir"; then
log "ERROR" "⛔ 创建目录失败: $host_data_dir"
return 1
fi
log "INFO" "✅ Tracker 启动成功"
fi
log "INFO" "✅ 目录创建完成"
# ------------------- 启动 Storage 容器 -------------------
if [[ "$storage_running" == false ]]; then
log "INFO" "🚀 正在启动 Storage 服务: $storage_container ..."
$sudoset docker run -d \
# ------------------- 启动 FastDFS 容器 -------------------
log "INFO" "🚀 正在启动 FastDFS 容器: $container_name ..."
$SUDO docker run -d \
--network=host \
--name "$storage_container" \
--name "$container_name" \
--restart=always \
-e "TRACKER_SERVER=$host_ip:22122" \
-v "$storage_host_dir:/var/fdfs" \
-e "FASTDFS_IPADDR=$host_ip" \
-v "$host_data_dir:/home/fastdfs" \
-v "/etc/localtime:/etc/localtime:ro" \
"$image_name" \
storage
"$image_name"
if [ $? -ne 0 ]; then
log "ERROR" "⛔ Storage 容器启动失败"
if [[ $? -ne 0 ]]; then
log "ERROR" "⛔ 容器启动失败"
log "INFO" "📄 查看最近容器日志以排查问题..."
$SUDO docker logs "$container_name" 2>/dev/null || true
return 1
fi
log "INFO" "✅ Storage 启动成功"
fi
# ------------------- 等待并验证 -------------------
log "INFO" "⏳ 等待服务初始化..."
sleep 8
local all_running=true
for container in "$tracker_container" "$storage_container"; do
if ! $sudoset docker ps --format '{{.Names}}' | grep -wq "^$container$"; then
log "ERROR" "⛔ 容器 '$container' 启动后未运行"
all_running=false
fi
done
log "INFO" "✅ FastDFS 容器启动成功,等待初始化..."
sleep 5
if [[ "$all_running" == true ]]; then
# ------------------- 验证容器状态 -------------------
if $SUDO docker ps --format '{{.Names}}' | grep -wq "$container_name"; then
log "INFO" "🎉 FastDFS 部署完成!"
$sudoset docker ps --filter "name=utracker" --filter "name=ustorage" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
$SUDO docker ps --filter "name=$container_name" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
else
log "ERROR" "⛔ 部分容器启动失败,请检查日志: docker logs utracker / ustorage"
log "ERROR" "⛔ 容器启动后未运行,请检查日志: docker logs $container_name"
return 1
fi
......@@ -736,7 +717,7 @@ function nacos_arm() {
# --- 配置变量 ---
local container_name="unacos"
local image_tag="nacos-server:v2.5.1"
local tar_image="/data/temp/nacos-server-v2.5.1.tar.gz"
local tar_image="/data/temp/arm_nacos-server-v2.5.1.tar.gz"
local host_data_dir="/data/middleware/nacos"
# 🔐 新增认证配置
......@@ -847,7 +828,7 @@ function nginx_arm() {
local nginx_version="v1.27.3"
local nginx_image="nginx:${nginx_version}"
local nginx_container_name="unginx"
local nginx_image_tar="${temp_dir}/nginx-${nginx_version}.tar.gz"
local nginx_image_tar="${temp_dir}/arm_nginx-${nginx_version}.tar.gz"
local required_dirs=(
"/data/middleware/nginx/log"
"/data/middleware/nginx/data/cache"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论