sanpang commited on
Commit
f82f658
·
1 Parent(s): 76d1a76

fix | error and Chinese garbled code

Browse files
Files changed (1) hide show
  1. .container/run_in_docker.bat +108 -46
.container/run_in_docker.bat CHANGED
@@ -1,116 +1,178 @@
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
72
  timeout /t !CHECK_INTERVAL_SECONDS! /nobreak > nul
73
  set /a total_wait+=!CHECK_INTERVAL_SECONDS!
74
 
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
 
1
  @echo off
2
+ chcp 65001 >nul
3
  setlocal enabledelayedexpansion
4
 
5
+ REM 定义配置变量
6
+ REM Define configuration variables
7
  set SERVICE_NAME=owl
8
  set PYTHON_CMD=xvfb-python
9
  set MAX_WAIT_SECONDS=60
10
  set CHECK_INTERVAL_SECONDS=2
11
 
12
+ REM 检查参数
13
+ REM Check parameters
14
  if "%~1"=="" (
15
+ echo 用法: run_in_docker.bat [脚本名称] "你的问题"
16
+ echo Usage: run_in_docker.bat [script name] "your question"
17
+ echo 例如: run_in_docker.bat run.py "什么是人工智能?"
18
+ echo Example: run_in_docker.bat run.py "What is artificial intelligence?"
19
+ echo 或者: run_in_docker.bat run_deepseek_example.py "什么是人工智能?"
20
+ echo Or: run_in_docker.bat run_deepseek_example.py "What is artificial intelligence?"
21
+ echo 如果不指定脚本名称,默认使用 run.py
22
+ echo If script name is not specified, run.py will be used by default
23
  exit /b 1
24
  )
25
 
26
+ REM 判断第一个参数是否是脚本名称
27
+ REM Determine if the first parameter is a script name
28
  set SCRIPT_NAME=%~1
29
  set QUERY=%~2
30
 
31
  if "!SCRIPT_NAME:~-3!"==".py" (
32
+ REM 如果提供了第二个参数,则为查询内容
33
+ REM If a second parameter is provided, it's the query content
34
  if "!QUERY!"=="" (
35
+ echo 请提供查询参数,例如: run_in_docker.bat !SCRIPT_NAME! "你的问题"
36
+ echo Please provide query parameter, e.g.: run_in_docker.bat !SCRIPT_NAME! "your question"
37
  exit /b 1
38
  )
39
  ) else (
40
+ REM 如果第一个参数不是脚本名称,则默认使用 run.py
41
+ REM If the first parameter is not a script name, use run.py by default
42
  set QUERY=!SCRIPT_NAME!
43
  set SCRIPT_NAME=run.py
44
  )
45
 
46
+ REM 检查脚本是否存在
47
+ REM Check if the script exists
48
+ if not exist "..\owl\!SCRIPT_NAME!" (
49
+ echo 错误: 脚本 '..\owl\!SCRIPT_NAME!' 不存在
50
+ echo Error: Script '..\owl\!SCRIPT_NAME!' does not exist
51
+ echo 可用的脚本有:
52
+ echo Available scripts:
53
+ dir /b ..\owl\*.py | findstr /v "__"
54
  exit /b 1
55
  )
56
 
57
+ echo 使用脚本: !SCRIPT_NAME!
58
+ echo Using script: !SCRIPT_NAME!
59
+ echo 查询内容: !QUERY!
60
+ echo Query content: !QUERY!
61
 
62
+ REM 优先检查新版 docker compose 命令
63
+ REM Check new docker compose command first
64
+ docker compose version >nul 2>nul
65
+ if %ERRORLEVEL% EQU 0 (
66
+ echo 使用新版 docker compose 命令
67
+ echo Using new docker compose command
68
+ set COMPOSE_CMD=docker compose
69
+ ) else (
70
+ REM 如果新版不可用,检查旧版 docker-compose
71
+ REM If new version is not available, check old docker-compose
72
+ where docker-compose >nul 2>nul
73
+ if %ERRORLEVEL% EQU 0 (
74
+ echo 使用旧版 docker-compose 命令
75
+ echo Using old docker-compose command
76
+ set COMPOSE_CMD=docker-compose
77
+ ) else (
78
+ echo 错误: Docker Compose 未安装
79
+ echo Error: Docker Compose not installed
80
+ echo 请确保 Docker Desktop 已正确安装
81
+ echo Please make sure Docker Desktop is properly installed
82
+ pause
83
+ exit /b 1
84
+ )
85
+ )
86
+
87
+ REM 从docker-compose.yml获取服务名称(如果文件存在)
88
+ REM Get service name from docker-compose.yml (if file exists)
89
+ if exist "docker-compose.yml" (
90
+ for /f "tokens=*" %%a in ('findstr /r "^ [a-zA-Z0-9_-]*:" docker-compose.yml') do (
91
  set line=%%a
92
  set service=!line:~2,-1!
93
  if not "!service!"=="" (
94
+ REM 使用第一个找到的服务名称
95
+ REM Use the first service name found
96
  set SERVICE_NAME=!service!
97
+ echo 从docker-compose.yml检测到服务名称: !SERVICE_NAME!
98
+ echo Detected service name from docker-compose.yml: !SERVICE_NAME!
99
  goto :found_service
100
  )
101
  )
102
  )
103
  :found_service
104
 
105
+ REM 确保Docker容器正在运行
106
+ REM Ensure Docker container is running
107
+ %COMPOSE_CMD% ps | findstr "!SERVICE_NAME!.*Up" > nul
108
  if errorlevel 1 (
109
+ echo 启动Docker容器...
110
+ echo Starting Docker container...
111
+ %COMPOSE_CMD% up -d
112
 
113
+ REM 使用循环检查容器是否就绪
114
+ REM Use loop to check if container is ready
115
+ echo 等待容器启动...
116
+ echo Waiting for container to start...
117
  set /a total_wait=0
118
 
119
  :wait_loop
120
  timeout /t !CHECK_INTERVAL_SECONDS! /nobreak > nul
121
  set /a total_wait+=!CHECK_INTERVAL_SECONDS!
122
 
123
+ %COMPOSE_CMD% ps | findstr "!SERVICE_NAME!.*Up" > nul
124
  if errorlevel 1 (
125
  if !total_wait! LSS !MAX_WAIT_SECONDS! (
126
+ echo 容器尚未就绪,已等待!total_wait!秒,继续等待...
127
+ echo Container not ready yet, waited for !total_wait! seconds, continuing to wait...
128
  goto :wait_loop
129
  ) else (
130
+ echo 错误:容器启动超时,已等待!MAX_WAIT_SECONDS!秒
131
+ echo Error: Container startup timeout, waited for !MAX_WAIT_SECONDS! seconds
132
+ echo 请检查Docker容器状态:%COMPOSE_CMD% ps
133
+ echo Please check Docker container status: %COMPOSE_CMD% ps
134
  exit /b 1
135
  )
136
  ) else (
137
+ echo 容器已就绪,共等待了!total_wait!秒
138
+ echo Container is ready, waited for !total_wait! seconds in total
139
  )
140
  )
141
 
142
+ REM 检查容器中是否存在xvfb-python命令
143
+ REM Check if xvfb-python command exists in container
144
+ echo 检查容器中的命令...
145
+ echo Checking commands in container...
146
+ %COMPOSE_CMD% exec -T !SERVICE_NAME! which !PYTHON_CMD! > nul 2>&1
147
  if errorlevel 1 (
148
+ echo 警告:容器中未找到!PYTHON_CMD!命令,尝试使用python替代
149
+ echo Warning: !PYTHON_CMD! command not found in container, trying to use python instead
150
  set PYTHON_CMD=python
151
 
152
+ REM 检查python命令是否存在
153
+ REM Check if python command exists
154
+ %COMPOSE_CMD% exec -T !SERVICE_NAME! which python > nul 2>&1
155
  if errorlevel 1 (
156
+ echo 错误:容器中未找到python命令
157
+ echo Error: python command not found in container
158
+ echo 请检查容器配置
159
+ echo Please check container configuration
160
  exit /b 1
161
  )
162
  )
163
 
164
+ REM 在容器中运行指定的脚本,传递查询参数
165
+ REM Run the specified script in container, passing query parameter
166
+ echo 在Docker容器中使用!PYTHON_CMD!运行脚本...
167
+ echo Running script in Docker container using !PYTHON_CMD!...
168
+ %COMPOSE_CMD% exec -T !SERVICE_NAME! !PYTHON_CMD! !SCRIPT_NAME! "!QUERY!"
169
 
170
  if errorlevel 0 (
171
+ echo 查询完成!
172
+ echo Query completed!
173
  ) else (
174
+ echo 查询执行失败,请检查错误信息。
175
+ echo Query execution failed, please check error messages.
176
  )
177
 
178
  pause