Skip to content

Commit 02a3970

Browse files
committed
remove docker check prerequisites
1 parent 60f78a4 commit 02a3970

File tree

6 files changed

+23
-106
lines changed

6 files changed

+23
-106
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client-core/src/container/command.rs

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -5,97 +5,6 @@ use tokio::process::Command;
55
use tracing::{debug, info, warn};
66

77
impl DockerManager {
8-
/// 检查 Docker 状态
9-
pub async fn check_docker_status(&self) -> Result<()> {
10-
info!("🔍 检查Docker环境...");
11-
12-
// 直接执行命令检查 Docker 是否可用
13-
debug!("检查Docker版本...");
14-
match Command::new("docker").args(["--version"]).output().await {
15-
Ok(output) if output.status.success() => {
16-
let version_output = String::from_utf8_lossy(&output.stdout);
17-
info!("✅ Docker版本: {}", version_output.trim());
18-
}
19-
Ok(output) => {
20-
let stderr = String::from_utf8_lossy(&output.stderr);
21-
warn!("❌ Docker版本检查失败: {}", stderr);
22-
return Err(anyhow::anyhow!("Docker 未安装或不在 PATH 中"));
23-
}
24-
Err(e) => {
25-
warn!("❌ Docker命令执行失败: {}", e);
26-
return Err(anyhow::anyhow!("Docker 未安装或不在 PATH 中"));
27-
}
28-
}
29-
30-
// 检查 Docker 服务是否运行
31-
debug!("检查Docker服务状态...");
32-
info!("🔍 检查Docker服务运行状态...");
33-
let output = self.run_docker_command(&["info"]).await?;
34-
if !output.status.success() {
35-
let stderr = String::from_utf8_lossy(&output.stderr);
36-
warn!("❌ Docker服务状态检查失败: {}", stderr);
37-
return Err(anyhow::anyhow!("Docker 服务未运行: {stderr}"));
38-
}
39-
40-
info!("✅ Docker服务运行正常");
41-
Ok(())
42-
}
43-
44-
/// 检查 Docker 和 Docker Compose 是否可用
45-
pub async fn check_prerequisites(&self) -> Result<()> {
46-
self.check_prerequisites_with_path(None).await
47-
}
48-
49-
/// 检查 Docker 和 Docker Compose 是否可用(支持自定义路径)
50-
pub async fn check_prerequisites_with_path(
51-
&self,
52-
custom_compose_file: Option<&std::path::PathBuf>,
53-
) -> Result<()> {
54-
info!("🔍 开始检查Docker环境先决条件...");
55-
56-
// 首先检查 Docker Compose 文件是否存在
57-
let compose_file = custom_compose_file.unwrap_or(&self.compose_file);
58-
debug!("检查Docker Compose文件: {}", compose_file.display());
59-
if !compose_file.exists() {
60-
let error_msg = format!("Docker Compose 文件不存在: {}", compose_file.display());
61-
warn!("❌ {}", error_msg);
62-
return Err(anyhow::anyhow!(error_msg));
63-
}
64-
info!("✅ Docker Compose文件存在: {}", compose_file.display());
65-
66-
// 检查 Docker 状态
67-
self.check_docker_status().await?;
68-
69-
// 检查 docker compose 或 docker-compose 命令
70-
info!("🔍 检查Docker Compose命令可用性...");
71-
debug!("优先检查docker compose子命令...");
72-
73-
// 优先检查 docker compose(子命令,现代 Docker 推荐)
74-
let subcommand_available = self
75-
.run_docker_command(&["compose", "--version"])
76-
.await
77-
.is_ok();
78-
79-
// 回退检查 docker-compose(独立命令,旧版本)
80-
let standalone_available = Command::new("docker-compose")
81-
.args(["--version"])
82-
.output()
83-
.await
84-
.is_ok();
85-
86-
if subcommand_available {
87-
info!("✅ 找到docker compose子命令");
88-
} else if standalone_available {
89-
info!("✅ 找到docker-compose独立命令");
90-
} else {
91-
warn!("❌ Docker Compose命令不可用");
92-
return Err(anyhow::anyhow!("Docker Compose 未安装或不可用"));
93-
}
94-
95-
info!("✅ Docker环境检查完成,所有先决条件满足");
96-
Ok(())
97-
}
98-
998
/// 执行 docker-compose 命令
1009
pub(crate) async fn run_compose_command(&self, args: &[&str]) -> Result<std::process::Output> {
10110
debug!("执行docker-compose命令: {:?}", args);

client-core/src/container/image.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ impl DockerManager {
5555

5656
/// 拉取最新镜像
5757
pub async fn pull_images(&self) -> Result<()> {
58-
self.check_prerequisites().await?;
58+
// 跳过环境先决条件检查,避免 Docker 命令导致的高磁盘 IO
59+
// self.check_prerequisites().await?;
5960

6061
let output = self.run_compose_command(&["pull"]).await?;
6162

client-core/src/container/service.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ impl DockerManager {
1212
pub async fn start_services(&self) -> Result<()> {
1313
info!("🚀 开始启动Docker服务...");
1414

15-
info!("📋 步骤1: 检查环境先决条件...");
16-
self.check_prerequisites().await?;
15+
// 跳过环境先决条件检查,避免 Docker 命令导致的高磁盘 IO
16+
// info!("📋 步骤1: 检查环境先决条件...");
17+
// self.check_prerequisites().await?;
1718

18-
info!("📁 步骤2: 检查并创建宿主机挂载目录...");
19+
info!("📁 步骤1: 检查并创建宿主机挂载目录...");
1920
self.ensure_host_volumes_exist().await?;
2021

21-
info!("🎯 步骤3: 执行docker-compose up命令...");
22+
info!("🎯 步骤2: 执行docker-compose up命令...");
2223
// let output = self.run_compose_command(&["up", "-d", "--pull", "always"]).await?;
2324
let output = self.run_compose_command(&["up", "-d"]).await?;
2425

@@ -47,7 +48,8 @@ impl DockerManager {
4748

4849
/// 停止所有服务
4950
pub async fn stop_services(&self) -> Result<()> {
50-
self.check_prerequisites().await?;
51+
// 跳过环境先决条件检查,避免 Docker 命令导致的高磁盘 IO
52+
// self.check_prerequisites().await?;
5153

5254
let output = self.run_compose_command(&["down"]).await?;
5355

@@ -76,7 +78,8 @@ impl DockerManager {
7678

7779
/// 重启单个服务
7880
pub async fn restart_service(&self, service_name: &str) -> Result<()> {
79-
self.check_prerequisites().await?;
81+
// 跳过环境先决条件检查,避免 Docker 命令导致的高磁盘 IO
82+
// self.check_prerequisites().await?;
8083

8184
// 先停止指定服务
8285
let output = self.run_compose_command(&["stop", service_name]).await?;
@@ -190,7 +193,8 @@ impl DockerManager {
190193

191194
/// 获取所有容器状态(包括非compose容器)- 保留原有功能
192195
pub async fn get_all_containers_status(&self) -> Result<Vec<ServiceInfo>> {
193-
self.check_prerequisites().await?;
196+
// 跳过环境先决条件检查,避免 Docker 命令导致的高磁盘 IO
197+
// self.check_prerequisites().await?;
194198

195199
info!("使用 ducker 库获取所有容器状态...");
196200

nuwax-cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "nuwax-cli"
3-
version = "1.0.75"
3+
version = "1.0.76"
44
edition = "2024"
55
description = "Docker 服务管理和升级工具"
66
authors = ["soddygo"]

nuwax-cli/src/docker_service/manager.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,14 @@ impl DockerServiceManager {
105105
pub async fn check_environment(&self) -> DockerServiceResult<()> {
106106
info!("检查 Docker 环境...");
107107

108-
// 检查 Docker 是否安装和运行
109-
self.docker_manager
110-
.check_docker_status()
111-
.await
112-
.map_err(|e| DockerServiceError::EnvironmentCheck(e.to_string()))?;
108+
// 跳过 Docker 状态检查,避免高磁盘 IO 问题
109+
// Docker 29+ 版本中,docker info、docker --version 等命令会扫描大量数据
110+
// 导致部署过程中磁盘 IO 飙升,影响性能
111+
// 如果 Docker 未运行,后续操作会自然暴露错误
112+
// self.docker_manager
113+
// .check_docker_status()
114+
// .await
115+
// .map_err(|e| DockerServiceError::EnvironmentCheck(e.to_string()))?;
113116

114117
// 检查工作目录
115118
if !self.work_dir.exists() {

0 commit comments

Comments
 (0)