jzx17 commited on
Commit
df1acac
·
2 Parent(s): 6553fba d02f3a5

Merge branch 'camel-ai:main' into disable-coding-interactive-mode

Browse files
.container/Dockerfile CHANGED
@@ -1,32 +1,32 @@
1
- # 使用ARG定义可配置的构建参数
2
  ARG PYTHON_VERSION=3.10
3
  ARG PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
4
  ARG PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright
5
 
6
- # 第一阶段:构建依赖
7
  FROM python:${PYTHON_VERSION}-slim AS builder
8
 
9
- # 设置工作目录
10
  WORKDIR /build
11
 
12
- # 设置pip镜像源以加速下载
13
  ARG PIP_INDEX_URL
14
  RUN pip config set global.index-url ${PIP_INDEX_URL}
15
 
16
- # 安装构建依赖
17
  RUN apt-get update && apt-get install -y --no-install-recommends \
18
  build-essential \
19
  && apt-get clean \
20
  && rm -rf /var/lib/apt/lists/*
21
 
22
- # 复制并安装requirements.txt
23
  COPY requirements.txt .
24
  RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
25
 
26
- # 第二阶段:运行时环境
27
  FROM python:${PYTHON_VERSION}-slim
28
 
29
- # 添加构建信息标签
30
  ARG BUILD_DATE
31
  ARG VERSION
32
  LABEL org.opencontainers.image.created="${BUILD_DATE}" \
@@ -35,72 +35,72 @@ LABEL org.opencontainers.image.created="${BUILD_DATE}" \
35
  org.opencontainers.image.description="OWL Project Docker Image" \
36
  org.opencontainers.image.source="https://github.com/yourusername/owl"
37
 
38
- # 设置工作目录
39
  WORKDIR /app
40
 
41
- # 设置pip镜像源以加速下载
42
  ARG PIP_INDEX_URL
43
  RUN pip config set global.index-url ${PIP_INDEX_URL}
44
 
45
- # 从builder阶段复制已安装的Python包
46
  COPY --from=builder /install /usr/local
47
 
48
- # 优化apt安装,减少层数
49
  RUN apt-get update && apt-get install -y --no-install-recommends \
50
  curl \
51
  git \
52
  ffmpeg \
53
  libsm6 \
54
  libxext6 \
55
- # 添加xvfb和相关依赖
56
  xvfb \
57
  xauth \
58
  x11-utils \
59
  && apt-get clean \
60
  && rm -rf /var/lib/apt/lists/*
61
 
62
- # 安装 Playwright 依赖(使用国内镜像源)
63
  ENV PLAYWRIGHT_BROWSERS_PATH=/root/.cache/ms-playwright
64
  ARG PLAYWRIGHT_DOWNLOAD_HOST
65
  ENV PLAYWRIGHT_DOWNLOAD_HOST=${PLAYWRIGHT_DOWNLOAD_HOST}
66
  RUN pip install --no-cache-dir playwright && \
67
  playwright install --with-deps chromium
68
 
69
- # 创建非root用户
70
  RUN groupadd -r owl && useradd -r -g owl -m owl
71
 
72
- # 复制项目文件
73
  COPY owl/ ./owl/
74
  COPY licenses/ ./licenses/
75
  COPY assets/ ./assets/
76
  COPY README.md .
77
  COPY README_zh.md .
78
 
79
- # 设置环境变量文件
80
  COPY owl/.env_template ./owl/.env
81
 
82
- # 创建启动脚本
83
  RUN echo '#!/bin/bash\nxvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" python "$@"' > /usr/local/bin/xvfb-python && \
84
  chmod +x /usr/local/bin/xvfb-python
85
 
86
- # 创建欢迎脚本
87
- RUN echo '#!/bin/bash\necho "欢迎使用OWL项目Docker环境!"\necho ""\necho "可用的脚本:"\nls -1 *.py | grep -v "__" | sed "s/^/- /"\necho ""\necho "运行示例:"\necho " xvfb-python run.py # 运行默认脚本"\necho " xvfb-python run_deepseek_example.py # 运行DeepSeek示例"\necho ""\necho "或者使用自定义查询:"\necho " xvfb-python run.py \"你的问题\""\necho ""' > /usr/local/bin/owl-welcome && \
88
  chmod +x /usr/local/bin/owl-welcome
89
 
90
- # 设置工作目录
91
  WORKDIR /app/owl
92
 
93
- # 设置适当的权限
94
  RUN chown -R owl:owl /app
95
  RUN mkdir -p /root/.cache && chown -R owl:owl /root/.cache
96
 
97
- # 切换到非root用户
98
- # 注意:如果需要访问/dev/shm,可能仍需要root用户
99
  # USER owl
100
 
101
- # 添加健康检查
102
  HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
103
  CMD python -c "import sys; sys.exit(0 if __import__('os').path.exists('/app/owl') else 1)"
104
 
105
- # 容器启动命令
106
- CMD ["/bin/bash", "-c", "owl-welcome && /bin/bash"]
 
1
+ # 使用ARG定义可配置的构建参数 | Using ARG to define configurable build parameters
2
  ARG PYTHON_VERSION=3.10
3
  ARG PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
4
  ARG PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright
5
 
6
+ # 第一阶段:构建依赖 | Stage 1: Build dependencies
7
  FROM python:${PYTHON_VERSION}-slim AS builder
8
 
9
+ # 设置工作目录 | Set working directory
10
  WORKDIR /build
11
 
12
+ # 设置pip镜像源以加速下载 | Set pip mirror to accelerate downloads
13
  ARG PIP_INDEX_URL
14
  RUN pip config set global.index-url ${PIP_INDEX_URL}
15
 
16
+ # 安装构建依赖 | Install build dependencies
17
  RUN apt-get update && apt-get install -y --no-install-recommends \
18
  build-essential \
19
  && apt-get clean \
20
  && rm -rf /var/lib/apt/lists/*
21
 
22
+ # 复制并安装requirements.txt | Copy and install requirements.txt
23
  COPY requirements.txt .
24
  RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
25
 
26
+ # 第二阶段:运行时环境 | Stage 2: Runtime environment
27
  FROM python:${PYTHON_VERSION}-slim
28
 
29
+ # 添加构建信息标签 | Add build information labels
30
  ARG BUILD_DATE
31
  ARG VERSION
32
  LABEL org.opencontainers.image.created="${BUILD_DATE}" \
 
35
  org.opencontainers.image.description="OWL Project Docker Image" \
36
  org.opencontainers.image.source="https://github.com/yourusername/owl"
37
 
38
+ # 设置工作目录 | Set working directory
39
  WORKDIR /app
40
 
41
+ # 设置pip镜像源以加速下载 | Set pip mirror to accelerate downloads
42
  ARG PIP_INDEX_URL
43
  RUN pip config set global.index-url ${PIP_INDEX_URL}
44
 
45
+ # 从builder阶段复制已安装的Python包 | Copy installed Python packages from builder stage
46
  COPY --from=builder /install /usr/local
47
 
48
+ # 优化apt安装,减少层数 | Optimize apt installation, reduce layers
49
  RUN apt-get update && apt-get install -y --no-install-recommends \
50
  curl \
51
  git \
52
  ffmpeg \
53
  libsm6 \
54
  libxext6 \
55
+ # 添加xvfb和相关依赖 | Add xvfb and related dependencies
56
  xvfb \
57
  xauth \
58
  x11-utils \
59
  && apt-get clean \
60
  && rm -rf /var/lib/apt/lists/*
61
 
62
+ # 安装 Playwright 依赖(使用国内镜像源) | Install Playwright dependencies (using Chinese mirror)
63
  ENV PLAYWRIGHT_BROWSERS_PATH=/root/.cache/ms-playwright
64
  ARG PLAYWRIGHT_DOWNLOAD_HOST
65
  ENV PLAYWRIGHT_DOWNLOAD_HOST=${PLAYWRIGHT_DOWNLOAD_HOST}
66
  RUN pip install --no-cache-dir playwright && \
67
  playwright install --with-deps chromium
68
 
69
+ # 创建非root用户 | Create non-root user
70
  RUN groupadd -r owl && useradd -r -g owl -m owl
71
 
72
+ # 复制项目文件 | Copy project files
73
  COPY owl/ ./owl/
74
  COPY licenses/ ./licenses/
75
  COPY assets/ ./assets/
76
  COPY README.md .
77
  COPY README_zh.md .
78
 
79
+ # 设置环境变量文件 | Set environment variables file
80
  COPY owl/.env_template ./owl/.env
81
 
82
+ # 创建启动脚本 | Create startup script
83
  RUN echo '#!/bin/bash\nxvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" python "$@"' > /usr/local/bin/xvfb-python && \
84
  chmod +x /usr/local/bin/xvfb-python
85
 
86
+ # 创建欢迎脚本 | Create welcome script
87
+ RUN echo '#!/bin/bash\necho "欢迎使用OWL项目Docker环境!"\necho "Welcome to OWL Project Docker environment!"\necho ""\necho "可用的脚本 | Available scripts:"\nls -1 *.py | grep -v "__" | sed "s/^/- /"\necho ""\necho "运行示例 | Run examples:"\necho " xvfb-python run.py # 运行默认脚本 | Run default script"\necho " xvfb-python run_deepseek_example.py # 运行DeepSeek示例 | Run DeepSeek example"\necho ""\necho "或者使用自定义查询 | Or use custom query:"\necho " xvfb-python run.py \"你的问题 | Your question\""\necho ""' > /usr/local/bin/owl-welcome && \
88
  chmod +x /usr/local/bin/owl-welcome
89
 
90
+ # 设置工作目录 | Set working directory
91
  WORKDIR /app/owl
92
 
93
+ # 设置适当的权限 | Set appropriate permissions
94
  RUN chown -R owl:owl /app
95
  RUN mkdir -p /root/.cache && chown -R owl:owl /root/.cache
96
 
97
+ # 切换到非root用户 | Switch to non-root user
98
+ # 注意:如果需要访问/dev/shm,可能仍需要root用户 | Note: If you need to access /dev/shm, you may still need root user
99
  # USER owl
100
 
101
+ # 添加健康检查 | Add health check
102
  HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
103
  CMD python -c "import sys; sys.exit(0 if __import__('os').path.exists('/app/owl') else 1)"
104
 
105
+ # 容器启动命令 | Container startup command
106
+ CMD ["/bin/bash", "-c", "owl-welcome && /bin/bash"]
.container/build_docker.bat CHANGED
@@ -1,14 +1,14 @@
1
  @echo off
2
  setlocal enabledelayedexpansion
3
 
4
- echo 在Windows上构建Docker镜像...
5
 
6
- REM 设置配置变量
7
  set CACHE_DIR=.docker-cache\pip
8
  set BUILD_ARGS=--build-arg BUILDKIT_INLINE_CACHE=1
9
  set COMPOSE_FILE=docker-compose.yml
10
 
11
- REM 解析命令行参数
12
  set CLEAN_CACHE=0
13
  set REBUILD=0
14
  set SERVICE=
@@ -32,80 +32,80 @@ if /i "%~1"=="--service" (
32
  goto :parse_args
33
  )
34
  if /i "%~1"=="--help" (
35
- echo 用法: build_docker.bat [选项]
36
- echo 选项:
37
- echo --clean 清理缓存目录
38
- echo --rebuild 强制重新构建镜像
39
- echo --service 指定要构建的服务名称
40
- echo --help 显示此帮助信息
41
  exit /b 0
42
  )
43
  shift
44
  goto :parse_args
45
  :end_parse_args
46
 
47
- REM 检查Docker是否安装
48
  where docker >nul 2>nul
49
  if %ERRORLEVEL% NEQ 0 (
50
- echo 错误: Docker未安装
51
- echo 请先安装Docker Desktop: https://docs.docker.com/desktop/install/windows-install/
52
  pause
53
  exit /b 1
54
  )
55
 
56
- REM 检查Docker是否运行
57
  docker info >nul 2>nul
58
  if %ERRORLEVEL% NEQ 0 (
59
- echo 错误: Docker未运行
60
- echo 请启动Docker Desktop应用程序
61
  pause
62
  exit /b 1
63
  )
64
 
65
- REM 检查docker-compose.yml文件是否存在
66
  if not exist "%COMPOSE_FILE%" (
67
- echo 错误: 未找到%COMPOSE_FILE%文件
68
- echo 请确保在正确的目录中运行此脚本
69
  pause
70
  exit /b 1
71
  )
72
 
73
- REM 检查Docker Compose命令
74
  where docker-compose >nul 2>nul
75
  if %ERRORLEVEL% EQU 0 (
76
  set COMPOSE_CMD=docker-compose
77
  ) else (
78
- echo 尝试使用新的docker compose命令...
79
  docker compose version >nul 2>nul
80
  if %ERRORLEVEL% EQU 0 (
81
  set COMPOSE_CMD=docker compose
82
  ) else (
83
- echo 错误: 未找到Docker Compose命令
84
- echo 请确保Docker Desktop已正确安装
85
  pause
86
  exit /b 1
87
  )
88
  )
89
 
90
- REM 设置Docker BuildKit环境变量
91
  set DOCKER_BUILDKIT=1
92
  set COMPOSE_DOCKER_CLI_BUILD=1
93
 
94
- echo 启用Docker BuildKit加速构建...
95
 
96
- REM 清理缓存(如果指定)
97
  if %CLEAN_CACHE% EQU 1 (
98
- echo 清理缓存目录...
99
  if exist "%CACHE_DIR%" rmdir /s /q "%CACHE_DIR%"
100
  )
101
 
102
- REM 创建缓存目录
103
  if not exist "%CACHE_DIR%" (
104
- echo 创建缓存目录...
105
  mkdir "%CACHE_DIR%"
106
  )
107
 
108
- REM 添加构建时间标记
109
  for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
110
  set "YEAR=%dt:~0,4%"
111
  set "MONTH=%dt:~4,2%"
@@ -115,33 +115,33 @@ set "MINUTE=%dt:~10,2%"
115
  set "BUILD_TIME=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%"
116
  set "BUILD_ARGS=%BUILD_ARGS% --build-arg BUILD_TIME=%BUILD_TIME%"
117
 
118
- REM 构建Docker镜像
119
- echo 开始构建Docker镜像...
120
 
121
  if "%SERVICE%"=="" (
122
  if %REBUILD% EQU 1 (
123
- echo 强制重新构建所有服务...
124
  %COMPOSE_CMD% build --no-cache %BUILD_ARGS%
125
  ) else (
126
  %COMPOSE_CMD% build %BUILD_ARGS%
127
  )
128
  ) else (
129
  if %REBUILD% EQU 1 (
130
- echo 强制重新构建服务 %SERVICE%...
131
  %COMPOSE_CMD% build --no-cache %BUILD_ARGS% %SERVICE%
132
  ) else (
133
- echo 构建服务 %SERVICE%...
134
  %COMPOSE_CMD% build %BUILD_ARGS% %SERVICE%
135
  )
136
  )
137
 
138
  if %ERRORLEVEL% EQU 0 (
139
- echo Docker镜像构建成功!
140
- echo 构建时间: %BUILD_TIME%
141
- echo 可以使用以下命令启动容器:
142
  echo %COMPOSE_CMD% up -d
143
  ) else (
144
- echo Docker镜像构建失败,请检查错误信息。
145
  )
146
 
147
- pause
 
1
  @echo off
2
  setlocal enabledelayedexpansion
3
 
4
+ echo 在Windows上构建Docker镜像... | Building Docker image on Windows...
5
 
6
+ REM 设置配置变量 | Set configuration variables
7
  set CACHE_DIR=.docker-cache\pip
8
  set BUILD_ARGS=--build-arg BUILDKIT_INLINE_CACHE=1
9
  set COMPOSE_FILE=docker-compose.yml
10
 
11
+ REM 解析命令行参数 | Parse command line arguments
12
  set CLEAN_CACHE=0
13
  set REBUILD=0
14
  set SERVICE=
 
32
  goto :parse_args
33
  )
34
  if /i "%~1"=="--help" (
35
+ echo 用法 | Usage: build_docker.bat [选项 | options]
36
+ echo 选项 | Options:
37
+ echo --clean 清理缓存目录 | Clean cache directory
38
+ echo --rebuild 强制重新构建镜像 | Force rebuild image
39
+ echo --service 指定要构建的服务名称 | Specify service name to build
40
+ echo --help 显示此帮助信息 | Show this help message
41
  exit /b 0
42
  )
43
  shift
44
  goto :parse_args
45
  :end_parse_args
46
 
47
+ REM 检查Docker是否安装 | Check if Docker is installed
48
  where docker >nul 2>nul
49
  if %ERRORLEVEL% NEQ 0 (
50
+ echo 错误 | Error: Docker未安装 | Docker not installed
51
+ echo 请先安装Docker Desktop | Please install Docker Desktop first: https://docs.docker.com/desktop/install/windows-install/
52
  pause
53
  exit /b 1
54
  )
55
 
56
+ REM 检查Docker是否运行 | Check if Docker is running
57
  docker info >nul 2>nul
58
  if %ERRORLEVEL% NEQ 0 (
59
+ echo 错误 | Error: Docker未运行 | Docker not running
60
+ echo 请启动Docker Desktop应用程序 | Please start Docker Desktop application
61
  pause
62
  exit /b 1
63
  )
64
 
65
+ REM 检查docker-compose.yml文件是否存在 | Check if docker-compose.yml file exists
66
  if not exist "%COMPOSE_FILE%" (
67
+ echo 错误 | Error: 未找到%COMPOSE_FILE%文件 | %COMPOSE_FILE% file not found
68
+ echo 请确保在正确的目录中运行此脚本 | Please make sure you are running this script in the correct directory
69
  pause
70
  exit /b 1
71
  )
72
 
73
+ REM 检查Docker Compose命令 | Check Docker Compose command
74
  where docker-compose >nul 2>nul
75
  if %ERRORLEVEL% EQU 0 (
76
  set COMPOSE_CMD=docker-compose
77
  ) else (
78
+ echo 尝试使用新的docker compose命令... | Trying to use new docker compose command...
79
  docker compose version >nul 2>nul
80
  if %ERRORLEVEL% EQU 0 (
81
  set COMPOSE_CMD=docker compose
82
  ) else (
83
+ echo 错误 | Error: 未找到Docker Compose命令 | Docker Compose command not found
84
+ echo 请确保Docker Desktop已正确安装 | Please make sure Docker Desktop is properly installed
85
  pause
86
  exit /b 1
87
  )
88
  )
89
 
90
+ REM 设置Docker BuildKit环境变量 | Set Docker BuildKit environment variables
91
  set DOCKER_BUILDKIT=1
92
  set COMPOSE_DOCKER_CLI_BUILD=1
93
 
94
+ echo 启用Docker BuildKit加速构建... | Enabling Docker BuildKit to accelerate build...
95
 
96
+ REM 清理缓存(如果指定) | Clean cache (if specified)
97
  if %CLEAN_CACHE% EQU 1 (
98
+ echo 清理缓存目录... | Cleaning cache directory...
99
  if exist "%CACHE_DIR%" rmdir /s /q "%CACHE_DIR%"
100
  )
101
 
102
+ REM 创建缓存目录 | Create cache directory
103
  if not exist "%CACHE_DIR%" (
104
+ echo 创建缓存目录... | Creating cache directory...
105
  mkdir "%CACHE_DIR%"
106
  )
107
 
108
+ REM 添加构建时间标记 | Add build time tag
109
  for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
110
  set "YEAR=%dt:~0,4%"
111
  set "MONTH=%dt:~4,2%"
 
115
  set "BUILD_TIME=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%"
116
  set "BUILD_ARGS=%BUILD_ARGS% --build-arg BUILD_TIME=%BUILD_TIME%"
117
 
118
+ REM 构建Docker镜像 | Build Docker image
119
+ echo 开始构建Docker镜像... | Starting to build Docker image...
120
 
121
  if "%SERVICE%"=="" (
122
  if %REBUILD% EQU 1 (
123
+ echo 强制重新构建所有服务... | Force rebuilding all services...
124
  %COMPOSE_CMD% build --no-cache %BUILD_ARGS%
125
  ) else (
126
  %COMPOSE_CMD% build %BUILD_ARGS%
127
  )
128
  ) else (
129
  if %REBUILD% EQU 1 (
130
+ echo 强制重新构建服务 %SERVICE%... | Force rebuilding service %SERVICE%...
131
  %COMPOSE_CMD% build --no-cache %BUILD_ARGS% %SERVICE%
132
  ) else (
133
+ echo 构建服务 %SERVICE%... | Building service %SERVICE%...
134
  %COMPOSE_CMD% build %BUILD_ARGS% %SERVICE%
135
  )
136
  )
137
 
138
  if %ERRORLEVEL% EQU 0 (
139
+ echo Docker镜像构建成功! | Docker image build successful!
140
+ echo 构建时间 | Build time: %BUILD_TIME%
141
+ echo 可以使用以下命令启动容器: | You can use the following command to start the container:
142
  echo %COMPOSE_CMD% up -d
143
  ) else (
144
+ echo Docker镜像构建失败,请检查错误信息。 | Docker image build failed, please check error messages.
145
  )
146
 
147
+ pause
.container/build_docker.sh CHANGED
@@ -1,6 +1,6 @@
1
  #!/bin/bash
2
 
3
- # 设置配置变量
4
  CACHE_DIR=".docker-cache/pip"
5
  BUILD_ARGS="--build-arg BUILDKIT_INLINE_CACHE=1"
6
  COMPOSE_FILE="docker-compose.yml"
@@ -8,7 +8,7 @@ CLEAN_CACHE=0
8
  REBUILD=0
9
  SERVICE=""
10
 
11
- # 解析命令行参数
12
  while [[ $# -gt 0 ]]; do
13
  case "$1" in
14
  --clean)
@@ -24,127 +24,127 @@ while [[ $# -gt 0 ]]; do
24
  shift 2
25
  ;;
26
  --help)
27
- echo "用法: ./build_docker.sh [选项]"
28
- echo "选项:"
29
- echo " --clean 清理缓存目录"
30
- echo " --rebuild 强制重新构建镜像"
31
- echo " --service 指定要构建的服务名称"
32
- echo " --help 显示此帮助信息"
33
  exit 0
34
  ;;
35
  *)
36
- echo "未知选项: $1"
37
- echo "使用 --help 查看帮助"
38
  exit 1
39
  ;;
40
  esac
41
  done
42
 
43
- # 检测操作系统类型
44
  OS_TYPE=$(uname -s)
45
- echo "检测到操作系统: $OS_TYPE"
46
 
47
- # 检查Docker是否安装
48
  if ! command -v docker &> /dev/null; then
49
- echo "错误: Docker未安装"
50
- echo "请先安装Docker: https://docs.docker.com/get-docker/"
51
  exit 1
52
  fi
53
 
54
- # 检查Docker是否运行
55
  if ! docker info &> /dev/null; then
56
- echo "错误: Docker未运行"
57
- echo "请启动Docker服务"
58
  exit 1
59
  fi
60
 
61
- # 检查docker-compose.yml文件是否存在
62
  if [ ! -f "$COMPOSE_FILE" ]; then
63
- echo "错误: 未找到$COMPOSE_FILE文件"
64
- echo "请确保在正确的目录中运行此脚本"
65
  exit 1
66
  fi
67
 
68
- # 设置Docker BuildKit环境变量
69
  export DOCKER_BUILDKIT=1
70
  export COMPOSE_DOCKER_CLI_BUILD=1
71
 
72
- echo "启用Docker BuildKit加速构建..."
73
 
74
- # 清理缓存(如果指定)
75
  if [ $CLEAN_CACHE -eq 1 ]; then
76
- echo "清理缓存目录..."
77
  rm -rf "$CACHE_DIR"
78
  fi
79
 
80
- # 创建缓存目录
81
  mkdir -p "$CACHE_DIR"
82
 
83
- # 添加构建时间标记
84
  BUILD_TIME=$(date +"%Y%m%d_%H%M%S")
85
  BUILD_ARGS="$BUILD_ARGS --build-arg BUILD_TIME=$BUILD_TIME"
86
 
87
- # 获取脚本所在目录
88
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
89
- # 获取项目根目录(脚本所在目录的父目录)
90
  PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
91
 
92
- echo "脚本目录: $SCRIPT_DIR"
93
- echo "项目根目录: $PROJECT_ROOT"
94
 
95
- # 切换到项目根目录
96
  cd "$PROJECT_ROOT"
97
 
98
- # 检查Docker Compose命令
99
  if command -v docker-compose &> /dev/null; then
100
  COMPOSE_CMD="docker-compose"
101
- echo "使用 docker-compose 命令"
102
  elif docker compose version &> /dev/null; then
103
  COMPOSE_CMD="docker compose"
104
- echo "使用 docker compose 命令"
105
  else
106
- echo "错误: 未找到Docker Compose命令"
107
- echo "请安装Docker Compose: https://docs.docker.com/compose/install/"
108
  exit 1
109
  fi
110
 
111
- # 检测CPU核心数,用于并行构建
112
  CPU_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 2)
113
  if [ $CPU_CORES -gt 2 ]; then
114
  PARALLEL_FLAG="--parallel"
115
- echo "检测到${CPU_CORES}个CPU核心,启用并行构建..."
116
  else
117
  PARALLEL_FLAG=""
118
  fi
119
 
120
- # 构建命令基础部分
121
  BUILD_CMD="$COMPOSE_CMD -f \"$SCRIPT_DIR/docker-compose.yml\" build $PARALLEL_FLAG --build-arg BUILDKIT_INLINE_CACHE=1"
122
 
123
- # 根据操作系统类型执行不同的命令
124
  if [[ "$OS_TYPE" == "Darwin" ]]; then
125
  # macOS
126
- echo "在macOS上构建Docker镜像..."
127
  eval $BUILD_CMD
128
  elif [[ "$OS_TYPE" == "Linux" ]]; then
129
  # Linux
130
- echo "在Linux上构建Docker镜像..."
131
  eval $BUILD_CMD
132
  elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
133
  # Windows
134
- echo "在Windows上构建Docker镜像..."
135
  eval $BUILD_CMD
136
  else
137
- echo "未知操作系统,尝试使用标准命令构建..."
138
  eval $BUILD_CMD
139
  fi
140
 
141
- # 检查构建结果
142
  if [ $? -eq 0 ]; then
143
- echo "Docker镜像构建成功!"
144
- echo "构建时间: $BUILD_TIME"
145
- echo "可以使用以下命令启动容器:"
146
  echo "$COMPOSE_CMD -f \"$SCRIPT_DIR/docker-compose.yml\" up -d"
147
  else
148
- echo "Docker镜像构建失败,请检查错误信息。"
149
  exit 1
150
- fi
 
1
  #!/bin/bash
2
 
3
+ # 设置配置变量 | Set configuration variables
4
  CACHE_DIR=".docker-cache/pip"
5
  BUILD_ARGS="--build-arg BUILDKIT_INLINE_CACHE=1"
6
  COMPOSE_FILE="docker-compose.yml"
 
8
  REBUILD=0
9
  SERVICE=""
10
 
11
+ # 解析命令行参数 | Parse command line arguments
12
  while [[ $# -gt 0 ]]; do
13
  case "$1" in
14
  --clean)
 
24
  shift 2
25
  ;;
26
  --help)
27
+ echo "用法 | Usage: ./build_docker.sh [选项 | options]"
28
+ echo "选项 | Options:"
29
+ echo " --clean 清理缓存目录 | Clean cache directory"
30
+ echo " --rebuild 强制重新构建镜像 | Force rebuild image"
31
+ echo " --service 指定要构建的服务名称 | Specify service name to build"
32
+ echo " --help 显示此帮助信息 | Show this help message"
33
  exit 0
34
  ;;
35
  *)
36
+ echo "未知选项 | Unknown option: $1"
37
+ echo "使用 --help 查看帮助 | Use --help to see help"
38
  exit 1
39
  ;;
40
  esac
41
  done
42
 
43
+ # 检测操作系统类型 | Detect operating system type
44
  OS_TYPE=$(uname -s)
45
+ echo "检测到操作系统 | Detected OS: $OS_TYPE"
46
 
47
+ # 检查Docker是否安装 | Check if Docker is installed
48
  if ! command -v docker &> /dev/null; then
49
+ echo "错误 | Error: Docker未安装 | Docker not installed"
50
+ echo "请先安装Docker | Please install Docker first: https://docs.docker.com/get-docker/"
51
  exit 1
52
  fi
53
 
54
+ # 检查Docker是否运行 | Check if Docker is running
55
  if ! docker info &> /dev/null; then
56
+ echo "错误 | Error: Docker未运行 | Docker not running"
57
+ echo "请启动Docker服务 | Please start Docker service"
58
  exit 1
59
  fi
60
 
61
+ # 检查docker-compose.yml文件是否存在 | Check if docker-compose.yml file exists
62
  if [ ! -f "$COMPOSE_FILE" ]; then
63
+ echo "错误 | Error: 未找到$COMPOSE_FILE文件 | $COMPOSE_FILE file not found"
64
+ echo "请确保在正确的目录中运行此脚本 | Please make sure you are running this script in the correct directory"
65
  exit 1
66
  fi
67
 
68
+ # 设置Docker BuildKit环境变量 | Set Docker BuildKit environment variables
69
  export DOCKER_BUILDKIT=1
70
  export COMPOSE_DOCKER_CLI_BUILD=1
71
 
72
+ echo "启用Docker BuildKit加速构建... | Enabling Docker BuildKit to accelerate build..."
73
 
74
+ # 清理缓存(如果指定) | Clean cache (if specified)
75
  if [ $CLEAN_CACHE -eq 1 ]; then
76
+ echo "清理缓存目录... | Cleaning cache directory..."
77
  rm -rf "$CACHE_DIR"
78
  fi
79
 
80
+ # 创建缓存目录 | Create cache directory
81
  mkdir -p "$CACHE_DIR"
82
 
83
+ # 添加构建时间标记 | Add build time tag
84
  BUILD_TIME=$(date +"%Y%m%d_%H%M%S")
85
  BUILD_ARGS="$BUILD_ARGS --build-arg BUILD_TIME=$BUILD_TIME"
86
 
87
+ # 获取脚本所在目录 | Get script directory
88
  SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
89
+ # 获取项目根目录(脚本所在目录的父目录) | Get project root directory (parent directory of script directory)
90
  PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
91
 
92
+ echo "脚本目录 | Script directory: $SCRIPT_DIR"
93
+ echo "项目根目录 | Project root directory: $PROJECT_ROOT"
94
 
95
+ # 切换到项目根目录 | Change to project root directory
96
  cd "$PROJECT_ROOT"
97
 
98
+ # 检查Docker Compose命令 | Check Docker Compose command
99
  if command -v docker-compose &> /dev/null; then
100
  COMPOSE_CMD="docker-compose"
101
+ echo "使用 docker-compose 命令 | Using docker-compose command"
102
  elif docker compose version &> /dev/null; then
103
  COMPOSE_CMD="docker compose"
104
+ echo "使用 docker compose 命令 | Using docker compose command"
105
  else
106
+ echo "错误 | Error: 未找到Docker Compose命令 | Docker Compose command not found"
107
+ echo "请安装Docker Compose | Please install Docker Compose: https://docs.docker.com/compose/install/"
108
  exit 1
109
  fi
110
 
111
+ # 检测CPU核心数,用于并行构建 | Detect CPU cores for parallel build
112
  CPU_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 2)
113
  if [ $CPU_CORES -gt 2 ]; then
114
  PARALLEL_FLAG="--parallel"
115
+ echo "检测到${CPU_CORES}个CPU核心,启用并行构建... | Detected ${CPU_CORES} CPU cores, enabling parallel build..."
116
  else
117
  PARALLEL_FLAG=""
118
  fi
119
 
120
+ # 构建命令基础部分 | Base part of build command
121
  BUILD_CMD="$COMPOSE_CMD -f \"$SCRIPT_DIR/docker-compose.yml\" build $PARALLEL_FLAG --build-arg BUILDKIT_INLINE_CACHE=1"
122
 
123
+ # 根据操作系统类型执行不同的命令 | Execute different commands based on OS type
124
  if [[ "$OS_TYPE" == "Darwin" ]]; then
125
  # macOS
126
+ echo "在macOS上构建Docker镜像... | Building Docker image on macOS..."
127
  eval $BUILD_CMD
128
  elif [[ "$OS_TYPE" == "Linux" ]]; then
129
  # Linux
130
+ echo "在Linux上构建Docker镜像... | Building Docker image on Linux..."
131
  eval $BUILD_CMD
132
  elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
133
  # Windows
134
+ echo "在Windows上构建Docker镜像... | Building Docker image on Windows..."
135
  eval $BUILD_CMD
136
  else
137
+ echo "未知操作系统,尝试使用标准命令构建... | Unknown OS, trying to build with standard command..."
138
  eval $BUILD_CMD
139
  fi
140
 
141
+ # 检查构建结果 | Check build result
142
  if [ $? -eq 0 ]; then
143
+ echo "Docker镜像构建成功! | Docker image build successful!"
144
+ echo "构建时间 | Build time: $BUILD_TIME"
145
+ echo "可以使用以下命令启动容器: | You can use the following command to start the container:"
146
  echo "$COMPOSE_CMD -f \"$SCRIPT_DIR/docker-compose.yml\" up -d"
147
  else
148
+ echo "Docker镜像构建失败,请检查错误信息。 | Docker image build failed, please check error messages."
149
  exit 1
150
+ fi
.container/check_docker.bat CHANGED
@@ -1,62 +1,62 @@
1
  @echo off
2
- echo 检查Docker环境...
3
 
4
- REM 检查Docker是否安装
5
  where docker >nul 2>nul
6
  if %ERRORLEVEL% NEQ 0 (
7
- echo 错误: Docker未安装
8
- echo 在Windows上安装Docker的方法:
9
- echo 1. 访问 https://docs.docker.com/desktop/install/windows-install/ 下载Docker Desktop
10
- echo 2. 安装并启动Docker Desktop
11
  pause
12
  exit /b 1
13
  )
14
 
15
- echo Docker已安装
16
 
17
- REM 检查Docker Compose是否安装
18
  where docker-compose >nul 2>nul
19
  if %ERRORLEVEL% NEQ 0 (
20
- echo 警告: Docker-Compose未找到,尝试使用新的docker compose命令
21
  docker compose version >nul 2>nul
22
  if %ERRORLEVEL% NEQ 0 (
23
- echo 错误: Docker Compose未安装
24
- echo Docker Desktop for Windows应该已包含Docker Compose
25
- echo 请确保Docker Desktop已正确安装
26
  pause
27
  exit /b 1
28
  ) else (
29
- echo 使用新的docker compose命令
30
  set COMPOSE_CMD=docker compose
31
  )
32
  ) else (
33
- echo Docker-Compose已安装
34
  set COMPOSE_CMD=docker-compose
35
  )
36
 
37
- REM 检查Docker是否正在运行
38
  docker info >nul 2>nul
39
  if %ERRORLEVEL% NEQ 0 (
40
- echo 错误: Docker未运行
41
- echo 请启动Docker Desktop应用程序
42
  pause
43
  exit /b 1
44
  )
45
 
46
- echo Docker正在运行
47
 
48
- REM 检查是否有.env文件
49
  if not exist "owl\.env" (
50
- echo 警告: 未找到owl\.env文件
51
- echo 请运行以下命令创建环境变量文件:
52
  echo copy owl\.env_template owl\.env
53
- echo 然后编辑owl\.env文件,填写必要的API密钥
54
  ) else (
55
- echo 环境变量文件已存在
56
  )
57
 
58
- echo 所有检查完成,您的系统已准备好构建和运行OWL项目的Docker容器
59
- echo 请运行以下命令构建Docker镜像:
60
  echo %COMPOSE_CMD% build
61
 
62
- pause
 
1
  @echo off
2
+ echo 检查Docker环境... | Checking Docker environment...
3
 
4
+ REM 检查Docker是否安装 | Check if Docker is installed
5
  where docker >nul 2>nul
6
  if %ERRORLEVEL% NEQ 0 (
7
+ echo 错误 | Error: Docker未安装 | Docker not installed
8
+ echo 在Windows上安装Docker的方法 | How to install Docker on Windows:
9
+ echo 1. 访问 | Visit https://docs.docker.com/desktop/install/windows-install/ 下载Docker Desktop | to download Docker Desktop
10
+ echo 2. 安装并启动Docker Desktop | Install and start Docker Desktop
11
  pause
12
  exit /b 1
13
  )
14
 
15
+ echo Docker已安装 | Docker is installed
16
 
17
+ REM 检查Docker Compose是否安装 | Check if Docker Compose is installed
18
  where docker-compose >nul 2>nul
19
  if %ERRORLEVEL% NEQ 0 (
20
+ echo 警告 | Warning: Docker-Compose未找到,尝试使用新的docker compose命令 | Docker-Compose not found, trying to use new docker compose command
21
  docker compose version >nul 2>nul
22
  if %ERRORLEVEL% NEQ 0 (
23
+ echo 错误 | Error: Docker Compose未安装 | Docker Compose not installed
24
+ echo Docker Desktop for Windows应该已包含Docker Compose | Docker Desktop for Windows should already include Docker Compose
25
+ echo 请确保Docker Desktop已正确安装 | Please make sure Docker Desktop is properly installed
26
  pause
27
  exit /b 1
28
  ) else (
29
+ echo 使用新的docker compose命令 | Using new docker compose command
30
  set COMPOSE_CMD=docker compose
31
  )
32
  ) else (
33
+ echo Docker-Compose已安装 | Docker-Compose is installed
34
  set COMPOSE_CMD=docker-compose
35
  )
36
 
37
+ REM 检查Docker是否正在运行 | Check if Docker is running
38
  docker info >nul 2>nul
39
  if %ERRORLEVEL% NEQ 0 (
40
+ echo 错误 | Error: Docker未运行 | Docker not running
41
+ echo 请启动Docker Desktop应用程序 | Please start Docker Desktop application
42
  pause
43
  exit /b 1
44
  )
45
 
46
+ echo Docker正在运行 | Docker is running
47
 
48
+ REM 检查是否有.env文件 | Check if .env file exists
49
  if not exist "owl\.env" (
50
+ echo 警告 | Warning: 未找到owl\.env文件 | owl\.env file not found
51
+ echo 请运行以下命令创建环境变量文件 | Please run the following command to create environment variable file:
52
  echo copy owl\.env_template owl\.env
53
+ echo 然后编辑owl\.env文件,填写必要的API密钥 | Then edit owl\.env file and fill in necessary API keys
54
  ) else (
55
+ echo 环境变量文件已存在 | Environment variable file exists
56
  )
57
 
58
+ echo 所有检查完成,您的系统已准备好构建和运行OWL项目的Docker容器 | All checks completed, your system is ready to build and run OWL project Docker container
59
+ echo 请运行以下命令构建Docker镜像 | Please run the following command to build Docker image:
60
  echo %COMPOSE_CMD% build
61
 
62
+ pause
.container/check_docker.sh CHANGED
@@ -1,92 +1,92 @@
1
  #!/bin/bash
2
 
3
- # 检测操作系统类型
4
  OS_TYPE=$(uname -s)
5
- echo "检测到操作系统: $OS_TYPE"
6
 
7
- # 检查Docker是否安装
8
  if ! command -v docker &> /dev/null; then
9
- echo "错误: Docker未安装"
10
 
11
  if [[ "$OS_TYPE" == "Darwin" ]]; then
12
- echo "在macOS上安装Docker的方法:"
13
- echo "1. 访问 https://docs.docker.com/desktop/install/mac-install/ 下载Docker Desktop"
14
- echo "2. 安装并启动Docker Desktop"
15
  elif [[ "$OS_TYPE" == "Linux" ]]; then
16
- echo "在Linux上安装Docker的方法:"
17
- echo "1. 运行以下命令:"
18
  echo " sudo apt-get update"
19
  echo " sudo apt-get install docker.io docker-compose"
20
- echo "2. 启动Docker服务:"
21
  echo " sudo systemctl start docker"
22
  echo " sudo systemctl enable docker"
23
  elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
24
- echo "在Windows上安装Docker的方法:"
25
- echo "1. 访问 https://docs.docker.com/desktop/install/windows-install/ 下载Docker Desktop"
26
- echo "2. 安装并启动Docker Desktop"
27
  fi
28
 
29
  exit 1
30
  fi
31
 
32
- echo "Docker已安装"
33
 
34
- # 检查Docker Compose是否安装
35
  if ! command -v docker-compose &> /dev/null; then
36
- echo "错误: Docker Compose未安装"
37
 
38
  if [[ "$OS_TYPE" == "Darwin" ]]; then
39
- echo "Docker Desktop for Mac已包含Docker Compose"
40
  elif [[ "$OS_TYPE" == "Linux" ]]; then
41
- echo "在Linux上安装Docker Compose的方法:"
42
- echo "1. 运行以下命令:"
43
  echo " sudo apt-get install docker-compose"
44
  elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
45
- echo "Docker Desktop for Windows已包含Docker Compose"
46
  fi
47
 
48
  exit 1
49
  fi
50
 
51
- echo "Docker Compose已安装"
52
 
53
- # 检查Docker是否正在运行
54
  if ! docker info &> /dev/null; then
55
- echo "错误: Docker未运行"
56
 
57
  if [[ "$OS_TYPE" == "Darwin" ]]; then
58
- echo "请启动Docker Desktop应用程序"
59
  elif [[ "$OS_TYPE" == "Linux" ]]; then
60
- echo "请运行以下命令启动Docker服务:"
61
  echo "sudo systemctl start docker"
62
  elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
63
- echo "请启动Docker Desktop应用程序"
64
  fi
65
 
66
  exit 1
67
  fi
68
 
69
- echo "Docker正在运行"
70
 
71
- # 检查是否有足够的磁盘空间
72
  FREE_SPACE=$(df -h . | awk 'NR==2 {print $4}')
73
- echo "可用磁盘空间: $FREE_SPACE"
74
 
75
- # 检查是否有.env文件
76
  if [ ! -f "owl/.env" ]; then
77
- echo "警告: 未找到owl/.env文件"
78
- echo "请运行以下命令创建环境变量文件:"
79
  echo "cp owl/.env_template owl/.env"
80
- echo "然后编辑owl/.env文件,填写必要的API密钥"
81
  else
82
- echo "环境变量文件已存在"
83
  fi
84
 
85
- echo "所有检查完成,您的系统已准备好构建和运行OWL项目的Docker容器"
86
- echo "请运行以下命令构建Docker镜像:"
87
 
88
  if [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
89
  echo "build_docker.bat"
90
  else
91
  echo "./build_docker.sh"
92
- fi
 
1
  #!/bin/bash
2
 
3
+ # 检测操作系统类型 | Detect operating system type
4
  OS_TYPE=$(uname -s)
5
+ echo "检测到操作系统 | Detected OS: $OS_TYPE"
6
 
7
+ # 检查Docker是否安装 | Check if Docker is installed
8
  if ! command -v docker &> /dev/null; then
9
+ echo "错误 | Error: Docker未安装 | Docker not installed"
10
 
11
  if [[ "$OS_TYPE" == "Darwin" ]]; then
12
+ echo "在macOS上安装Docker的方法 | How to install Docker on macOS:"
13
+ echo "1. 访问 | Visit https://docs.docker.com/desktop/install/mac-install/ 下载Docker Desktop | to download Docker Desktop"
14
+ echo "2. 安装并启动Docker Desktop | Install and start Docker Desktop"
15
  elif [[ "$OS_TYPE" == "Linux" ]]; then
16
+ echo "在Linux上安装Docker的方法 | How to install Docker on Linux:"
17
+ echo "1. 运行以下命令 | Run the following commands:"
18
  echo " sudo apt-get update"
19
  echo " sudo apt-get install docker.io docker-compose"
20
+ echo "2. 启动Docker服务 | Start Docker service:"
21
  echo " sudo systemctl start docker"
22
  echo " sudo systemctl enable docker"
23
  elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
24
+ echo "在Windows上安装Docker的方法 | How to install Docker on Windows:"
25
+ echo "1. 访问 | Visit https://docs.docker.com/desktop/install/windows-install/ 下载Docker Desktop | to download Docker Desktop"
26
+ echo "2. 安装并启动Docker Desktop | Install and start Docker Desktop"
27
  fi
28
 
29
  exit 1
30
  fi
31
 
32
+ echo "Docker已安装 | Docker is installed"
33
 
34
+ # 检查Docker Compose是否安装 | Check if Docker Compose is installed
35
  if ! command -v docker-compose &> /dev/null; then
36
+ echo "错误 | Error: Docker Compose未安装 | Docker Compose not installed"
37
 
38
  if [[ "$OS_TYPE" == "Darwin" ]]; then
39
+ echo "Docker Desktop for Mac已包含Docker Compose | Docker Desktop for Mac already includes Docker Compose"
40
  elif [[ "$OS_TYPE" == "Linux" ]]; then
41
+ echo "在Linux上安装Docker Compose的方法 | How to install Docker Compose on Linux:"
42
+ echo "1. 运行以下命令 | Run the following command:"
43
  echo " sudo apt-get install docker-compose"
44
  elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
45
+ echo "Docker Desktop for Windows已包含Docker Compose | Docker Desktop for Windows already includes Docker Compose"
46
  fi
47
 
48
  exit 1
49
  fi
50
 
51
+ echo "Docker Compose已安装 | Docker Compose is installed"
52
 
53
+ # 检查Docker是否正在运行 | Check if Docker is running
54
  if ! docker info &> /dev/null; then
55
+ echo "错误 | Error: Docker未运行 | Docker not running"
56
 
57
  if [[ "$OS_TYPE" == "Darwin" ]]; then
58
+ echo "请启动Docker Desktop应用程序 | Please start Docker Desktop application"
59
  elif [[ "$OS_TYPE" == "Linux" ]]; then
60
+ echo "请运行以下命令启动Docker服务 | Please run the following command to start Docker service:"
61
  echo "sudo systemctl start docker"
62
  elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
63
+ echo "请启动Docker Desktop应用程序 | Please start Docker Desktop application"
64
  fi
65
 
66
  exit 1
67
  fi
68
 
69
+ echo "Docker正在运行 | Docker is running"
70
 
71
+ # 检查是否有足够的磁盘空间 | Check if there is enough disk space
72
  FREE_SPACE=$(df -h . | awk 'NR==2 {print $4}')
73
+ echo "可用磁盘空间 | Available disk space: $FREE_SPACE"
74
 
75
+ # 检查是否有.env文件 | Check if .env file exists
76
  if [ ! -f "owl/.env" ]; then
77
+ echo "警告 | Warning: 未找到owl/.env文件 | owl/.env file not found"
78
+ echo "请运行以下命令创建环境变量文件 | Please run the following command to create environment variable file:"
79
  echo "cp owl/.env_template owl/.env"
80
+ echo "然后编辑owl/.env文件,填写必要的API密钥 | Then edit owl/.env file and fill in necessary API keys"
81
  else
82
+ echo "环境变量文件已存在 | Environment variable file exists"
83
  fi
84
 
85
+ echo "所有检查完成,您的系统已准备好构建和运行OWL项目的Docker容器 | All checks completed, your system is ready to build and run OWL project Docker container"
86
+ echo "请运行以下命令构建Docker镜像 | Please run the following command to build Docker image:"
87
 
88
  if [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
89
  echo "build_docker.bat"
90
  else
91
  echo "./build_docker.sh"
92
+ fi
.container/docker-compose.yml CHANGED
@@ -4,49 +4,49 @@ services:
4
  context: ..
5
  dockerfile: .container/Dockerfile
6
  args:
7
- # 构建参数
8
  BUILDKIT_INLINE_CACHE: 1
9
- # 使用BuildKit加速构建
10
  cache_from:
11
  - python:3.10-slim
12
  volumes:
13
- # 挂载.env文件,方便配置API密钥
14
  - ./owl/.env:/app/owl/.env
15
- # 可选:挂载数据目录
16
  - ./data:/app/data
17
- # 挂载缓存目录,避免重复下载
18
  - playwright-cache:/root/.cache/ms-playwright
19
  - pip-cache:/root/.pip/cache
20
  environment:
21
- # 可以在这里设置环境变量,覆盖.env文件中的设置
22
  - OPENAI_API_KEY=${OPENAI_API_KEY}
23
- # 添加显示相关的环境变量
24
  - DISPLAY=:99
25
  - PLAYWRIGHT_BROWSERS_PATH=/root/.cache/ms-playwright
26
- # 设置Python不生成.pyc文件,减少磁盘IO
27
  - PYTHONDONTWRITEBYTECODE=1
28
- # 设置Python不缓冲输出,方便查看日志
29
  - PYTHONUNBUFFERED=1
30
- # 设置终端颜色
31
  - TERM=xterm-256color
32
- # 启用pip缓存
33
  - PIP_CACHE_DIR=/root/.pip/cache
34
  ports:
35
- # 如果项目有Web界面,可以映射端口
36
  - "8000:8000"
37
- # 使用交互模式运行容器
38
  stdin_open: true
39
  tty: true
40
- # 添加共享内存大小,提高浏览器性能
41
  shm_size: 2gb
42
- # 设置资源限制
43
  deploy:
44
  resources:
45
  limits:
46
  cpus: '2'
47
  memory: 4G
48
 
49
- # 定义持久化卷,用于缓存
50
  volumes:
51
  playwright-cache:
52
- pip-cache:
 
4
  context: ..
5
  dockerfile: .container/Dockerfile
6
  args:
7
+ # 构建参数 | Build arguments
8
  BUILDKIT_INLINE_CACHE: 1
9
+ # 使用BuildKit加速构建 | Use BuildKit to accelerate build
10
  cache_from:
11
  - python:3.10-slim
12
  volumes:
13
+ # 挂载.env文件,方便配置API密钥 | Mount .env file for easy API key configuration
14
  - ./owl/.env:/app/owl/.env
15
+ # 可选:挂载数据目录 | Optional: Mount data directory
16
  - ./data:/app/data
17
+ # 挂载缓存目录,避免重复下载 | Mount cache directories to avoid repeated downloads
18
  - playwright-cache:/root/.cache/ms-playwright
19
  - pip-cache:/root/.pip/cache
20
  environment:
21
+ # 可以在这里设置环境变量,覆盖.env文件中的设置 | Set environment variables here to override settings in .env file
22
  - OPENAI_API_KEY=${OPENAI_API_KEY}
23
+ # 添加显示相关的环境变量 | Add display-related environment variables
24
  - DISPLAY=:99
25
  - PLAYWRIGHT_BROWSERS_PATH=/root/.cache/ms-playwright
26
+ # 设置Python不生成.pyc文件,减少磁盘IO | Set Python to not generate .pyc files, reduce disk IO
27
  - PYTHONDONTWRITEBYTECODE=1
28
+ # 设置Python不缓冲输出,方便查看日志 | Set Python to not buffer output for easier log viewing
29
  - PYTHONUNBUFFERED=1
30
+ # 设置终端颜色 | Set terminal color
31
  - TERM=xterm-256color
32
+ # 启用pip缓存 | Enable pip cache
33
  - PIP_CACHE_DIR=/root/.pip/cache
34
  ports:
35
+ # 如果项目有Web界面,可以映射端口 | If the project has a web interface, map ports
36
  - "8000:8000"
37
+ # 使用交互模式运行容器 | Run container in interactive mode
38
  stdin_open: true
39
  tty: true
40
+ # 添加共享内存大小,提高浏览器性能 | Add shared memory size to improve browser performance
41
  shm_size: 2gb
42
+ # 设置资源限制 | Set resource limits
43
  deploy:
44
  resources:
45
  limits:
46
  cpus: '2'
47
  memory: 4G
48
 
49
+ # 定义持久化卷,用于缓存 | Define persistent volumes for caching
50
  volumes:
51
  playwright-cache:
52
+ pip-cache:
.container/run_in_docker.bat CHANGED
@@ -1,71 +1,71 @@
1
  @echo off
2
  setlocal enabledelayedexpansion
3
 
4
- REM 定义配置变量
5
  set SERVICE_NAME=owl
6
  set PYTHON_CMD=xvfb-python
7
  set MAX_WAIT_SECONDS=60
8
  set CHECK_INTERVAL_SECONDS=2
9
 
10
- REM 检查参数
11
  if "%~1"=="" (
12
- echo 用法: run_in_docker.bat [脚本名称] "你的问题"
13
- echo 例如: run_in_docker.bat run.py "什么是人工智能?"
14
- echo 或者: run_in_docker.bat run_deepseek_example.py "什么是人工智能?"
15
- echo 如果不指定脚本名称,默认使用 run.py
16
  exit /b 1
17
  )
18
 
19
- REM 判断第一个参数是否是脚本名称
20
  set SCRIPT_NAME=%~1
21
  set QUERY=%~2
22
 
23
  if "!SCRIPT_NAME:~-3!"==".py" (
24
- REM 如果提供了第二个参数,则为查询内容
25
  if "!QUERY!"=="" (
26
- echo 请提供查询参数,例如: run_in_docker.bat !SCRIPT_NAME! "你的问题"
27
  exit /b 1
28
  )
29
  ) else (
30
- REM 如果第一个参数不是脚本名称,则默认使用 run.py
31
  set QUERY=!SCRIPT_NAME!
32
  set SCRIPT_NAME=run.py
33
  )
34
 
35
- REM 检查脚本是否存在
36
  if not exist "owl\!SCRIPT_NAME!" (
37
- echo 错误: 脚本 'owl\!SCRIPT_NAME!' 不存在
38
- echo 可用的脚本有:
39
  dir /b owl\*.py | findstr /v "__"
40
  exit /b 1
41
  )
42
 
43
- echo 使用脚本: !SCRIPT_NAME!
44
- echo 查询内容: !QUERY!
45
 
46
- REM 从docker-compose.yml获取服务名称(如果文件存在)
47
  if exist ".container\docker-compose.yml" (
48
  for /f "tokens=*" %%a in ('findstr /r "^ [a-zA-Z0-9_-]*:" .container\docker-compose.yml') do (
49
  set line=%%a
50
  set service=!line:~2,-1!
51
  if not "!service!"=="" (
52
- REM 使用第一个找到的服务名称
53
  set SERVICE_NAME=!service!
54
- echo 从docker-compose.yml检测到服务名称: !SERVICE_NAME!
55
  goto :found_service
56
  )
57
  )
58
  )
59
  :found_service
60
 
61
- REM 确保Docker容器正在运行
62
  docker-compose ps | findstr "!SERVICE_NAME!.*Up" > nul
63
  if errorlevel 1 (
64
- echo 启动Docker容器...
65
  docker-compose up -d
66
 
67
- REM 使用循环检查容器是否就绪
68
- echo 等待容器启动...
69
  set /a total_wait=0
70
 
71
  :wait_loop
@@ -75,42 +75,42 @@ if errorlevel 1 (
75
  docker-compose ps | findstr "!SERVICE_NAME!.*Up" > nul
76
  if errorlevel 1 (
77
  if !total_wait! LSS !MAX_WAIT_SECONDS! (
78
- echo 容器尚未就绪,已等待!total_wait!秒,继续等待...
79
  goto :wait_loop
80
  ) else (
81
- echo 错误:容器启动超时,已等待!MAX_WAIT_SECONDS!秒
82
- echo 请检查Docker容器状态:docker-compose ps
83
  exit /b 1
84
  )
85
  ) else (
86
- echo 容器已就绪,共等待了!total_wait!秒
87
  )
88
  )
89
 
90
- REM 检查容器中是否存在xvfb-python命令
91
- echo 检查容器中的命令...
92
  docker-compose exec -T !SERVICE_NAME! which !PYTHON_CMD! > nul 2>&1
93
  if errorlevel 1 (
94
- echo 警告:容器中未找到!PYTHON_CMD!命令,尝试使用python替代
95
  set PYTHON_CMD=python
96
 
97
- REM 检查python命令是否存在
98
  docker-compose exec -T !SERVICE_NAME! which python > nul 2>&1
99
  if errorlevel 1 (
100
- echo 错误:容器中未找到python命令
101
- echo 请检查容器配置
102
  exit /b 1
103
  )
104
  )
105
 
106
- REM 在容器中运行指定的脚本,传递查询参数
107
- echo 在Docker容器中使用!PYTHON_CMD!运行脚本...
108
  docker-compose exec -T !SERVICE_NAME! !PYTHON_CMD! !SCRIPT_NAME! "!QUERY!"
109
 
110
  if errorlevel 0 (
111
- echo 查询完成!
112
  ) else (
113
- echo 查询执行失败,请检查错误信息。
114
  )
115
 
116
- pause
 
1
  @echo off
2
  setlocal enabledelayedexpansion
3
 
4
+ REM 定义配置变量 | Define configuration variables
5
  set SERVICE_NAME=owl
6
  set PYTHON_CMD=xvfb-python
7
  set MAX_WAIT_SECONDS=60
8
  set CHECK_INTERVAL_SECONDS=2
9
 
10
+ REM 检查参数 | Check parameters
11
  if "%~1"=="" (
12
+ echo 用法 | Usage: run_in_docker.bat [脚本名称 | script name] "你的问题 | your question"
13
+ echo 例如 | Example: run_in_docker.bat run.py "什么是人工智能? | What is artificial intelligence?"
14
+ echo 或者 | Or: run_in_docker.bat run_deepseek_example.py "什么是人工智能? | What is artificial intelligence?"
15
+ echo 如果不指定脚本名称,默认使用 run.py | If script name is not specified, run.py will be used by default
16
  exit /b 1
17
  )
18
 
19
+ REM 判断第一个参数是否是脚本名称 | Determine if the first parameter is a script name
20
  set SCRIPT_NAME=%~1
21
  set QUERY=%~2
22
 
23
  if "!SCRIPT_NAME:~-3!"==".py" (
24
+ REM 如果提供了第二个参数,则为查询内容 | If a second parameter is provided, it's the query content
25
  if "!QUERY!"=="" (
26
+ echo 请提供查询参数,例如 | Please provide query parameter, e.g.: run_in_docker.bat !SCRIPT_NAME! "你的问题 | your question"
27
  exit /b 1
28
  )
29
  ) else (
30
+ REM 如果第一个参数不是脚本名称,则默认使用 run.py | If the first parameter is not a script name, use run.py by default
31
  set QUERY=!SCRIPT_NAME!
32
  set SCRIPT_NAME=run.py
33
  )
34
 
35
+ REM 检查脚本是否存在 | Check if the script exists
36
  if not exist "owl\!SCRIPT_NAME!" (
37
+ echo 错误 | Error: 脚本 | Script 'owl\!SCRIPT_NAME!' 不存在 | does not exist
38
+ echo 可用的脚本有 | Available scripts:
39
  dir /b owl\*.py | findstr /v "__"
40
  exit /b 1
41
  )
42
 
43
+ echo 使用脚本 | Using script: !SCRIPT_NAME!
44
+ echo 查询内容 | Query content: !QUERY!
45
 
46
+ REM 从docker-compose.yml获取服务名称(如果文件存在) | Get service name from docker-compose.yml (if file exists)
47
  if exist ".container\docker-compose.yml" (
48
  for /f "tokens=*" %%a in ('findstr /r "^ [a-zA-Z0-9_-]*:" .container\docker-compose.yml') do (
49
  set line=%%a
50
  set service=!line:~2,-1!
51
  if not "!service!"=="" (
52
+ REM 使用第一个找到的服务名称 | Use the first service name found
53
  set SERVICE_NAME=!service!
54
+ echo 从docker-compose.yml检测到服务名称 | Detected service name from docker-compose.yml: !SERVICE_NAME!
55
  goto :found_service
56
  )
57
  )
58
  )
59
  :found_service
60
 
61
+ REM 确保Docker容器正在运行 | Ensure Docker container is running
62
  docker-compose ps | findstr "!SERVICE_NAME!.*Up" > nul
63
  if errorlevel 1 (
64
+ echo 启动Docker容器... | Starting Docker container...
65
  docker-compose up -d
66
 
67
+ REM 使用循环检查容器是否就绪 | Use loop to check if container is ready
68
+ echo 等待容器启动... | Waiting for container to start...
69
  set /a total_wait=0
70
 
71
  :wait_loop
 
75
  docker-compose ps | findstr "!SERVICE_NAME!.*Up" > nul
76
  if errorlevel 1 (
77
  if !total_wait! LSS !MAX_WAIT_SECONDS! (
78
+ echo 容器尚未就绪,已等待!total_wait!秒,继续等待... | Container not ready yet, waited for !total_wait! seconds, continuing to wait...
79
  goto :wait_loop
80
  ) else (
81
+ echo 错误 | Error:容器启动超时,已等待!MAX_WAIT_SECONDS!秒 | Container startup timeout, waited for !MAX_WAIT_SECONDS! seconds
82
+ echo 请检查Docker容器状态 | Please check Docker container status:docker-compose ps
83
  exit /b 1
84
  )
85
  ) else (
86
+ echo 容���已就绪,共等待了!total_wait!秒 | Container is ready, waited for !total_wait! seconds in total
87
  )
88
  )
89
 
90
+ REM 检查容器中是否存在xvfb-python命令 | Check if xvfb-python command exists in container
91
+ echo 检查容器中的命令... | Checking commands in container...
92
  docker-compose exec -T !SERVICE_NAME! which !PYTHON_CMD! > nul 2>&1
93
  if errorlevel 1 (
94
+ echo 警告 | Warning:容器中未找到!PYTHON_CMD!命令,尝试使用python替代 | !PYTHON_CMD! command not found in container, trying to use python instead
95
  set PYTHON_CMD=python
96
 
97
+ REM 检查python命令是否存在 | Check if python command exists
98
  docker-compose exec -T !SERVICE_NAME! which python > nul 2>&1
99
  if errorlevel 1 (
100
+ echo 错误 | Error:容器中未找到python命令 | python command not found in container
101
+ echo 请检查容器配置 | Please check container configuration
102
  exit /b 1
103
  )
104
  )
105
 
106
+ REM 在容器中运行指定的脚本,传递查询参数 | Run the specified script in container, passing query parameter
107
+ echo 在Docker容器中使用!PYTHON_CMD!运行脚本... | Running script in Docker container using !PYTHON_CMD!...
108
  docker-compose exec -T !SERVICE_NAME! !PYTHON_CMD! !SCRIPT_NAME! "!QUERY!"
109
 
110
  if errorlevel 0 (
111
+ echo 查询完成! | Query completed!
112
  ) else (
113
+ echo 查询执行失败,请检查错误信息。 | Query execution failed, please check error messages.
114
  )
115
 
116
+ pause
.container/run_in_docker.sh CHANGED
@@ -1,44 +1,44 @@
1
  #!/bin/bash
2
 
3
- # 定义配置变量
4
  SERVICE_NAME="owl"
5
  PYTHON_CMD="xvfb-python"
6
  MAX_WAIT_SECONDS=60
7
  CHECK_INTERVAL_SECONDS=2
8
 
9
- # 检测操作系统类型
10
  OS_TYPE=$(uname -s)
11
- echo "检测到操作系统: $OS_TYPE"
12
 
13
- # 检查是否提供了查询参数
14
  if [ $# -lt 1 ]; then
15
- echo "用法: ./run_in_docker.sh [脚本名称] '你的问题'"
16
- echo "例如: ./run_in_docker.sh run.py '什么是人工智能?'"
17
- echo "或者: ./run_in_docker.sh run_deepseek_example.py '什么是人工智能?'"
18
- echo "如果不指定脚本名称,默认使用 run.py"
19
  exit 1
20
  fi
21
 
22
- # 判断第一个参数是否是脚本名称
23
  if [[ $1 == *.py ]]; then
24
  SCRIPT_NAME="$1"
25
- # 如果提供了第二个参数,则为查询内容
26
  if [ $# -ge 2 ]; then
27
  QUERY="$2"
28
  else
29
- echo "请提供查询参数,例如: ./run_in_docker.sh $SCRIPT_NAME '你的问题'"
30
  exit 1
31
  fi
32
  else
33
- # 如果第一个参数不是脚本名称,则默认使用 run.py
34
  SCRIPT_NAME="run.py"
35
  QUERY="$1"
36
  fi
37
 
38
- # 检查脚本是否存在
39
  if [ ! -f "owl/$SCRIPT_NAME" ]; then
40
- echo "错误: 脚本 'owl/$SCRIPT_NAME' 不存在"
41
- echo "可用的脚本有:"
42
  if [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
43
  find owl -name "*.py" | grep -v "__" | sed 's/\\/\//g'
44
  else
@@ -47,36 +47,36 @@ if [ ! -f "owl/$SCRIPT_NAME" ]; then
47
  exit 1
48
  fi
49
 
50
- echo "使用脚本: $SCRIPT_NAME"
51
- echo "查询内容: $QUERY"
52
 
53
- # 从docker-compose.yml获取服务名称(如果文件存在)
54
  if [ -f ".container/docker-compose.yml" ]; then
55
  DETECTED_SERVICE=$(grep -E "^ [a-zA-Z0-9_-]*:" .container/docker-compose.yml | head -1 | sed 's/^ \(.*\):.*/\1/')
56
  if [ ! -z "$DETECTED_SERVICE" ]; then
57
  SERVICE_NAME="$DETECTED_SERVICE"
58
- echo "从docker-compose.yml检测到服务名称: $SERVICE_NAME"
59
  fi
60
  fi
61
 
62
- # 检查Docker Compose命令
63
  if command -v docker-compose &> /dev/null; then
64
  COMPOSE_CMD="docker-compose"
65
  elif docker compose version &> /dev/null; then
66
  COMPOSE_CMD="docker compose"
67
  else
68
- echo "错误: 未找到Docker Compose命令"
69
  exit 1
70
  fi
71
 
72
- # 确保Docker容器正在运行
73
  CONTAINER_RUNNING=$($COMPOSE_CMD ps | grep -c "$SERVICE_NAME.*Up" || true)
74
  if [ "$CONTAINER_RUNNING" -eq 0 ]; then
75
- echo "启动Docker容器..."
76
  $COMPOSE_CMD up -d
77
 
78
- # 使用循环检查容器是否就绪
79
- echo "等待容器启动..."
80
  TOTAL_WAIT=0
81
 
82
  while [ $TOTAL_WAIT -lt $MAX_WAIT_SECONDS ]; do
@@ -85,51 +85,51 @@ if [ "$CONTAINER_RUNNING" -eq 0 ]; then
85
 
86
  CONTAINER_RUNNING=$($COMPOSE_CMD ps | grep -c "$SERVICE_NAME.*Up" || true)
87
  if [ "$CONTAINER_RUNNING" -gt 0 ]; then
88
- echo "容器已就绪,共等待了 $TOTAL_WAIT 秒"
89
  break
90
  else
91
- echo "容器尚未就绪,已等待 $TOTAL_WAIT 秒,继续等待..."
92
  fi
93
  done
94
 
95
  if [ "$CONTAINER_RUNNING" -eq 0 ]; then
96
- echo "错误:容器启动超时,已等待 $MAX_WAIT_SECONDS 秒"
97
- echo "请检查Docker容器状态:$COMPOSE_CMD ps"
98
  exit 1
99
  fi
100
  fi
101
 
102
- # 检查容器中是否存在指定的Python命令
103
- echo "检查容器中的命令..."
104
  if ! $COMPOSE_CMD exec -T $SERVICE_NAME which $PYTHON_CMD &> /dev/null; then
105
- echo "警告:容器中未找到 $PYTHON_CMD 命令,尝试使用python替代"
106
  PYTHON_CMD="python"
107
 
108
- # 检查python命令是否存在
109
  if ! $COMPOSE_CMD exec -T $SERVICE_NAME which python &> /dev/null; then
110
- echo "错误:容器中未找到python命令"
111
- echo "请检查容器配置"
112
  exit 1
113
  fi
114
  fi
115
 
116
- # 在容器中运行指定的脚本,传递查询参数
117
- echo "在Docker容器中使用 $PYTHON_CMD 运行脚本..."
118
 
119
- # 根据操作系统类型执行不同的命令
120
  if [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
121
- # Windows可能需要特殊处理引号
122
  winpty $COMPOSE_CMD exec -T $SERVICE_NAME $PYTHON_CMD $SCRIPT_NAME "$QUERY"
123
  RESULT=$?
124
  else
125
- # macOS 或 Linux
126
  $COMPOSE_CMD exec -T $SERVICE_NAME $PYTHON_CMD $SCRIPT_NAME "$QUERY"
127
  RESULT=$?
128
  fi
129
 
130
- # 检查命令执行结果
131
  if [ $RESULT -eq 0 ]; then
132
- echo "查询完成!"
133
  else
134
- echo "查询执行失败,请检查错误信息。"
135
- fi
 
1
  #!/bin/bash
2
 
3
+ # 定义配置变量 | Define configuration variables
4
  SERVICE_NAME="owl"
5
  PYTHON_CMD="xvfb-python"
6
  MAX_WAIT_SECONDS=60
7
  CHECK_INTERVAL_SECONDS=2
8
 
9
+ # 检测操作系统类型 | Detect operating system type
10
  OS_TYPE=$(uname -s)
11
+ echo "检测到操作系统 | Detected operating system: $OS_TYPE"
12
 
13
+ # 检查是否提供了查询参数 | Check if query parameters are provided
14
  if [ $# -lt 1 ]; then
15
+ echo "用法 | Usage: ./run_in_docker.sh [脚本名称 | script name] '你的问题 | your question'"
16
+ echo "例如 | Example: ./run_in_docker.sh run.py '什么是人工智能? | What is artificial intelligence?'"
17
+ echo "或者 | Or: ./run_in_docker.sh run_deepseek_example.py '什么是人工智能? | What is artificial intelligence?'"
18
+ echo "如果不指定脚本名称,默认使用 run.py | If script name is not specified, run.py will be used by default"
19
  exit 1
20
  fi
21
 
22
+ # 判断第一个参数是否是脚本名称 | Determine if the first parameter is a script name
23
  if [[ $1 == *.py ]]; then
24
  SCRIPT_NAME="$1"
25
+ # 如果提供了第二个参数,则为查询内容 | If a second parameter is provided, it's the query content
26
  if [ $# -ge 2 ]; then
27
  QUERY="$2"
28
  else
29
+ echo "请提供查询参数,例如 | Please provide query parameter, e.g.: ./run_in_docker.sh $SCRIPT_NAME '你的问题 | your question'"
30
  exit 1
31
  fi
32
  else
33
+ # 如果第一个参数不是脚本名称,则默认使用 run.py | If the first parameter is not a script name, use run.py by default
34
  SCRIPT_NAME="run.py"
35
  QUERY="$1"
36
  fi
37
 
38
+ # 检查脚本是否存在 | Check if the script exists
39
  if [ ! -f "owl/$SCRIPT_NAME" ]; then
40
+ echo "错误 | Error: 脚本 | Script 'owl/$SCRIPT_NAME' 不存在 | does not exist"
41
+ echo "可用的脚本有 | Available scripts:"
42
  if [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
43
  find owl -name "*.py" | grep -v "__" | sed 's/\\/\//g'
44
  else
 
47
  exit 1
48
  fi
49
 
50
+ echo "使用脚本 | Using script: $SCRIPT_NAME"
51
+ echo "查询内容 | Query content: $QUERY"
52
 
53
+ # 从docker-compose.yml获取服务名称(如果文件存在) | Get service name from docker-compose.yml (if file exists)
54
  if [ -f ".container/docker-compose.yml" ]; then
55
  DETECTED_SERVICE=$(grep -E "^ [a-zA-Z0-9_-]*:" .container/docker-compose.yml | head -1 | sed 's/^ \(.*\):.*/\1/')
56
  if [ ! -z "$DETECTED_SERVICE" ]; then
57
  SERVICE_NAME="$DETECTED_SERVICE"
58
+ echo "从docker-compose.yml检测到服务名称 | Detected service name from docker-compose.yml: $SERVICE_NAME"
59
  fi
60
  fi
61
 
62
+ # 检查Docker Compose命令 | Check Docker Compose command
63
  if command -v docker-compose &> /dev/null; then
64
  COMPOSE_CMD="docker-compose"
65
  elif docker compose version &> /dev/null; then
66
  COMPOSE_CMD="docker compose"
67
  else
68
+ echo "错误 | Error: 未找到Docker Compose命令 | Docker Compose command not found"
69
  exit 1
70
  fi
71
 
72
+ # 确保Docker容器正在运行 | Ensure Docker container is running
73
  CONTAINER_RUNNING=$($COMPOSE_CMD ps | grep -c "$SERVICE_NAME.*Up" || true)
74
  if [ "$CONTAINER_RUNNING" -eq 0 ]; then
75
+ echo "启动Docker容器... | Starting Docker container..."
76
  $COMPOSE_CMD up -d
77
 
78
+ # 使用循环检查容器是否就绪 | Use loop to check if container is ready
79
+ echo "等待容器启动... | Waiting for container to start..."
80
  TOTAL_WAIT=0
81
 
82
  while [ $TOTAL_WAIT -lt $MAX_WAIT_SECONDS ]; do
 
85
 
86
  CONTAINER_RUNNING=$($COMPOSE_CMD ps | grep -c "$SERVICE_NAME.*Up" || true)
87
  if [ "$CONTAINER_RUNNING" -gt 0 ]; then
88
+ echo "容器已就绪,共等待了 $TOTAL_WAIT 秒 | Container is ready, waited for $TOTAL_WAIT seconds in total"
89
  break
90
  else
91
+ echo "容器尚未就绪,已等待 $TOTAL_WAIT 秒,继续等待... | Container not ready yet, waited for $TOTAL_WAIT seconds, continuing to wait..."
92
  fi
93
  done
94
 
95
  if [ "$CONTAINER_RUNNING" -eq 0 ]; then
96
+ echo "错误 | Error:容器启动超时,已等待 $MAX_WAIT_SECONDS 秒 | Container startup timeout, waited for $MAX_WAIT_SECONDS seconds"
97
+ echo "请检查Docker容器状态 | Please check Docker container status:$COMPOSE_CMD ps"
98
  exit 1
99
  fi
100
  fi
101
 
102
+ # 检查容器中是否存在指定的Python命令 | Check if specified Python command exists in container
103
+ echo "检查容器中的命令... | Checking commands in container..."
104
  if ! $COMPOSE_CMD exec -T $SERVICE_NAME which $PYTHON_CMD &> /dev/null; then
105
+ echo "警告 | Warning:容器中未找到 $PYTHON_CMD 命令,尝试使用python替代 | $PYTHON_CMD command not found in container, trying to use python instead"
106
  PYTHON_CMD="python"
107
 
108
+ # 检查python命令是否存在 | Check if python command exists
109
  if ! $COMPOSE_CMD exec -T $SERVICE_NAME which python &> /dev/null; then
110
+ echo "错误 | Error:容器中未找到python命令 | python command not found in container"
111
+ echo "请检查容器配置 | Please check container configuration"
112
  exit 1
113
  fi
114
  fi
115
 
116
+ # 在容器中运行指定的脚本,传递查询参数 | Run the specified script in container, passing query parameter
117
+ echo "在Docker容器中使用 $PYTHON_CMD 运行脚本... | Running script in Docker container using $PYTHON_CMD..."
118
 
119
+ # 根据操作系统类型执行不同的命令 | Execute different commands based on operating system type
120
  if [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
121
+ # Windows可能需要特殊处理引号 | Windows may need special handling for quotes
122
  winpty $COMPOSE_CMD exec -T $SERVICE_NAME $PYTHON_CMD $SCRIPT_NAME "$QUERY"
123
  RESULT=$?
124
  else
125
+ # macOS 或 Linux | macOS or Linux
126
  $COMPOSE_CMD exec -T $SERVICE_NAME $PYTHON_CMD $SCRIPT_NAME "$QUERY"
127
  RESULT=$?
128
  fi
129
 
130
+ # 检查命令执行结果 | Check command execution result
131
  if [ $RESULT -eq 0 ]; then
132
+ echo "查询完成! | Query completed!"
133
  else
134
+ echo "查询执行失败,请检查错误信息。 | Query execution failed, please check error messages."
135
+ fi