优化Harbor、Docker和Zsh安装流程,改进命令执行和文件操作
- 重构Harbor安装命令,改进容器检查和启动逻辑 - 修改Docker和DockerCompose安装方法,优化文件移动和权限设置 - 更新Zsh插件安装命令,简化git克隆过程 - 调整UnzipFile工具方法,支持更多压缩文件类型 - 修正Docker Daemon配置文件中的安装节标签 - 更新测试脚本,简化文件上传流程
This commit is contained in:
@@ -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!")
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user