脚本打包方式

为方便打包源成分,我们提供了一个打包脚本示例。脚本会将Docker源成分(配置文件)按照其原目录结构打包为DockerConf.tar.gz。

该脚本只是一个打包示例,不存在危险操作、源码泄露。

  1. 请在源虚拟机的任意位置创建一个.sh脚本文件(例如pack_docker_sources.sh),脚本内容详见pack_docker_sources.sh链接。
  2. 执行该脚本以完成打包过程,打包完成后,您可以根据提示信息获取打包文件。

    bash /path/to/pack_docker_sources.sh

    显示信息如下所示,加粗内容则为打包文件路径:

    Checking the configuration files...
    Starting to compress the configuration files...
    /root/.docker/config.json
    /etc/docker/daemon.json
    /etc/systemd/system/docker.service.d/http-proxy.conf
    DockerConf/
    DockerConf/config.json.tar.gz
    DockerConf/daemon.json.tar.gz
    DockerConf/http-proxy.conf.tar.gz
    Compression completed. The package is saved as /root/DockerConf.tar.gz.

    /path/to:脚本实际存放路径。

    若在Windows系统创建脚本,由于Windows和Linux的换行符表示方式不同,则在Linux系统执行脚本可能会出现以下报错,请按照如下步骤进行操作。
    1
    -bash: ./autoBuild.sh: /bin/bash^M: bad interpreter: No such file or directory
    
    1. 安装dos2unix。
      1
      yum install dos2unix
      
    2. 安装成功后执行以下命令。
      1
      dos2unix pack_docker_sources.sh
      
    3. 执行完成后请重新启动脚本。
    若您无可用Yum源安装失败,请执行以下命令,执行完成后请重新启动脚本。
    1
    sed -i 's/\r//g' pack_docker_sources.sh
    

  3. 可通过以下两种方式获取源成分。

    • 若使用“源成分包上传”方式,返回“添加成分信息”页签,单击“源成分包上传”“上传”按钮,上传打包的源成分包。
    • 若使用“节点服务器获取”方式,请执行如下命令解压源成分压缩包。
      1. 使用SSH远程登录工具,将压缩包上传至“所属节点”的自定义路径。
      2. 指定压缩包所在路径为“源成分所在路径”,例如:/home/DockerConf.tar.gz。

pack_docker_sources.sh

 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
#!/bin/bash

# 设置脚本错误处理
set -e

# 定义要检查的文件路径数组
files=(
    "${HOME}/.docker/config.json"
    "/etc/docker/daemon.json"
    "/etc/systemd/system/docker.service.d/http-proxy.conf"
)

# 检查相关配置文件是否存在
echo "Checking the configuration files..."
existing_files=()
for file in "${files[@]}"; do
    if [ -f "$file" ]; then
        existing_files+=("$file")
    fi
done

# 如果有文件存在,开始压缩
if [ ${#existing_files[@]} -gt 0 ]; then
    echo "Starting to compress the configuration files..."

    # 创建临时配置文件保存目录
    temp_dir="${HOME}/DockerConf"
    mkdir -p "$temp_dir"

    # 压缩存在的配置文件
    for file in "${existing_files[@]}"; do
        file_name=$(basename "$file")
        tar -Pczvf "$temp_dir/${file_name}.tar.gz" "$file"
    done

    # 压缩 Docker 相关配置文件
    cd "$HOME" && tar -czvf DockerConf.tar.gz DockerConf && rm -rf "$temp_dir"

    echo "Compression completed. The package is saved as ${HOME}/DockerConf.tar.gz"
else
    echo "No configuration files are found for any of the source components. Select No source component available to migrate the middleware."
fi