优化Harbor、Docker和Zsh安装流程,改进命令执行和文件操作

- 重构Harbor安装命令,改进容器检查和启动逻辑
- 修改Docker和DockerCompose安装方法,优化文件移动和权限设置
- 更新Zsh插件安装命令,简化git克隆过程
- 调整UnzipFile工具方法,支持更多压缩文件类型
- 修正Docker Daemon配置文件中的安装节标签
- 更新测试脚本,简化文件上传流程
This commit is contained in:
zeaslity
2025-03-11 15:59:21 +08:00
parent 06b044dabc
commit 35646ff89f
5 changed files with 92 additions and 44 deletions

View File

@@ -220,6 +220,7 @@ func addBaseSubcommands(cmd *cobra.Command) {
cmd.AddCommand(
dockerCmd,
dockerComposeCmd,
harborCmd,
swapCmd,
commonToolsInstall,
selinuxCmd,
@@ -246,10 +247,13 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
}
// 解压harbor
utils.UnzipFile(harborLocalInstallPath, "/root/wdd/harbor")
utils.UnzipFile(harborLocalInstallPath, "/root/wdd/")
// 获取本机的内网IPv4地址
configCache := config.ConfigCache
if len(configCache.Agent.Network.Interfaces) == 0 {
log.Error("没有获取到本机的ipv4地址无法安装harbor! 请执行 info all !")
}
ip := configCache.Agent.Network.Interfaces[0].IPv4
if ip == "" {
@@ -266,11 +270,9 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
return
}
// 进入harbor目录
os.Chdir("/root/wdd/harbor")
// 运行install.sh
ok, log1 := op.HardCodeCommandExecutor("bash install.sh")
op.SingleLineCommandExecutor([]string{"cd", "/root/wdd/harbor"})
ok, log1 := op.SingleLineCommandExecutor([]string{"/bin/bash", "/root/wdd/harbor/install.sh"})
if !ok {
log.Error("安装harbor失败: %s", log1)
return
@@ -314,18 +316,16 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
return
}
// 进入harbor目录
os.Chdir("/root/wdd/harbor")
// 启动harbor
ok, log1 := op.HardCodeCommandExecutor("docker-compose up -d")
op.SingleLineCommandExecutor([]string{"cd", "/root/wdd/harbor"})
ok, log1 := op.SingleLineCommandExecutor([]string{"docker-compose", "up", "-d"})
if !ok {
log.Error("启动harbor失败: %s", log1)
return
}
// 等待5
time.Sleep(5 * time.Second)
// 等待10
time.Sleep(10 * time.Second)
// 检查harbor是否启动成功
if !checkHarborIsRunning() {
@@ -357,7 +357,7 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
os.Chdir("/root/wdd/harbor")
// 停止harbor
ok, log1 := op.HardCodeCommandExecutor("docker-compose down")
ok, log1 := op.SingleLineCommandExecutor([]string{"docker-compose", "down"})
if !ok {
log.Error("停止harbor失败: %s", log1)
return
@@ -372,14 +372,30 @@ func addHarborSubcommands(harborCmd *cobra.Command) {
harborCmd.AddCommand(harborInstallCmd, harborUninstallCmd, harborStartCmd, harborStopCmd)
}
// checkHarborIsRunning 检查harbor是否运行
// checkHarborIsRunning 检查harbor是否运行 如果存在Exit 或者 Restarting 则表示有错误!
func checkHarborIsRunning() bool {
ok, log2 := op.HardCodeCommandExecutor("docker ps -a | grep goharbor/ | grep -E 'Exit|Restarting' | wc -l")
if !ok {
log.Error("查看harbor容器是否存在失败: %s", log2)
return false
}
if strings.TrimSpace(log2[0]) != "0" {
_, resultLog := op.PipeLineCommandExecutor([][]string{
{
"docker",
"ps",
"-a",
},
{
"grep",
"goharbor/",
},
{
"grep",
"-E",
"'Exit|Restarting'",
},
{
"wc",
"-l",
},
})
if strings.TrimSpace(resultLog[0]) != "0" {
log.Error("harbor启动失败! 请检查日志!")
return false
}
@@ -605,7 +621,21 @@ func addDockerSubcommands(cmd *cobra.Command) {
// apt-cache madison docker-ce | grep 20.10.20 | awk '{print$3}'
// get by method
ok, log4 := op.HardCodeCommandExecutor("apt-cache madison docker-ce | grep 20.10.20 | awk '{print$3}'")
ok, log4 := op.PipeLineCommandExecutor([][]string{
{
"apt-cache",
"madison",
"docker-ce",
},
{
"grep",
"20.10.20",
},
{
"awk",
"'{print$3}'",
},
})
if ok && log4 != nil && len(log4) > 0 {
specificDockerVersion = strings.TrimSpace(log4[0])
fmt.Println("get docker version from online => " + specificDockerVersion)
@@ -706,14 +736,7 @@ func addDockerSubcommands(cmd *cobra.Command) {
}
// 解压文件
utils.UnzipFile(dockerLocalInstallPath, "/root/wdd")
// 安装docker
err := utils.MoveFolerToAnother("/root/wdd/docker", "/usr/bin")
if err != nil {
log.Error("Failed to move Docker binaries: %s", err.Error())
return
}
utils.UnzipFile(dockerLocalInstallPath, "/root/wdd/")
// 设置权限
dockerBinList := []string{
@@ -728,11 +751,22 @@ func addDockerSubcommands(cmd *cobra.Command) {
"containerd-shim-runc-v2",
}
// 删除旧的docker 二进制文件
for _, bin := range dockerBinList {
ok, resultLog := op.HardCodeCommandExecutor("chmod 777 /usr/bin/" + bin)
utils.RemoveFile("/usr/bin/" + bin)
}
// 安装docker
err := utils.MoveFolerToAnother("/root/wdd/docker/", "/usr/bin")
if err != nil {
log.Error("Failed to move Docker binaries: %s", err.Error())
return
}
for _, bin := range dockerBinList {
ok, resultLog := op.SingleLineCommandExecutor([]string{"chmod", "777", "/usr/bin/" + bin})
if !ok {
log.Error("Failed to set permissions for Docker binaries: %s", resultLog)
return
}
}
@@ -910,7 +944,7 @@ func addDockerComposeSubcommands(cmd *cobra.Command) {
op.SingleLineCommandExecutor(linkCmd)
// 验证安装
verifyCmd := []string{"docker-compose", "--version"}
verifyCmd := []string{"/usr/local/bin/docker-compose", "version"}
ok, resultLog = op.SingleLineCommandExecutor(verifyCmd)
if !ok {
log.Error("Docker Compose 安装验证失败: %s", resultLog)
@@ -950,7 +984,7 @@ func addDockerComposeSubcommands(cmd *cobra.Command) {
}
// move file to /usr/local/bin
err := utils.MoveFileToAnother(dockerComposeLocalInstallPath, "/usr/local/bin")
err := utils.MoveFileToAnother(dockerComposeLocalInstallPath, "/usr/local/bin/docker-compose")
if err != nil {
log.Error("Failed to move Docker Compose binaries: %s", err.Error())
return
@@ -964,6 +998,18 @@ func addDockerComposeSubcommands(cmd *cobra.Command) {
return
}
// 创建软链接
linkCmd := []string{"ln", "-sf", "/usr/local/bin/docker-compose", "/usr/bin/docker-compose"}
op.SingleLineCommandExecutor(linkCmd)
// 验证安装
verifyCmd := []string{"/usr/local/bin/docker-compose", "version"}
ok, resultLog = op.SingleLineCommandExecutor(verifyCmd)
if !ok {
log.Error("Docker Compose 安装验证失败: %s", resultLog)
return
}
log.Info("Docker Compose installed successfully from local file!")
},
}