optimization bat (#93)

This commit is contained in:
Wendong-Fan
2025-03-09 14:23:32 +08:00
committed by GitHub
7 changed files with 454 additions and 63 deletions

View File

@@ -1,15 +1,53 @@
FROM python:3.10-slim
# 使用ARG定义可配置的构建参数
ARG PYTHON_VERSION=3.10
ARG PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
ARG PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright
# 第一阶段:构建依赖
FROM python:${PYTHON_VERSION}-slim AS builder
# 设置工作目录
WORKDIR /build
# 设置pip镜像源以加速下载
ARG PIP_INDEX_URL
RUN pip config set global.index-url ${PIP_INDEX_URL}
# 安装构建依赖
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 复制并安装requirements.txt
COPY requirements.txt .
RUN pip install --no-cache-dir --prefix=/install -r requirements.txt
# 第二阶段:运行时环境
FROM python:${PYTHON_VERSION}-slim
# 添加构建信息标签
ARG BUILD_DATE
ARG VERSION
LABEL org.opencontainers.image.created="${BUILD_DATE}" \
org.opencontainers.image.version="${VERSION}" \
org.opencontainers.image.title="OWL Project" \
org.opencontainers.image.description="OWL Project Docker Image" \
org.opencontainers.image.source="https://github.com/yourusername/owl"
# 设置工作目录
WORKDIR /app
# 设置pip镜像源以加速下载
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
ARG PIP_INDEX_URL
RUN pip config set global.index-url ${PIP_INDEX_URL}
# 从builder阶段复制已安装的Python包
COPY --from=builder /install /usr/local
# 优化apt安装减少层数
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
curl \
software-properties-common \
git \
ffmpeg \
libsm6 \
@@ -21,17 +59,16 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 先复制并安装requirements.txt利用Docker缓存机制
COPY requirements.txt .
# 启用pip缓存以加速构建
RUN pip install -r requirements.txt
# 安装 Playwright 依赖(使用国内镜像源)
ENV PLAYWRIGHT_BROWSERS_PATH=/root/.cache/ms-playwright
ENV PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright
RUN pip install playwright && \
ARG PLAYWRIGHT_DOWNLOAD_HOST
ENV PLAYWRIGHT_DOWNLOAD_HOST=${PLAYWRIGHT_DOWNLOAD_HOST}
RUN pip install --no-cache-dir playwright && \
playwright install --with-deps chromium
# 创建非root用户
RUN groupadd -r owl && useradd -r -g owl -m owl
# 复制项目文件
COPY owl/ ./owl/
COPY licenses/ ./licenses/
@@ -42,9 +79,6 @@ COPY README_zh.md .
# 设置环境变量文件
COPY owl/.env_template ./owl/.env
# 设置工作目录
WORKDIR /app/owl
# 创建启动脚本
RUN echo '#!/bin/bash\nxvfb-run --auto-servernum --server-args="-screen 0 1280x960x24" python "$@"' > /usr/local/bin/xvfb-python && \
chmod +x /usr/local/bin/xvfb-python
@@ -53,5 +87,20 @@ RUN echo '#!/bin/bash\nxvfb-run --auto-servernum --server-args="-screen 0 1280x9
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 && \
chmod +x /usr/local/bin/owl-welcome
# 容器启动命令改为交互式shell
# 设置工作目录
WORKDIR /app/owl
# 设置适当的权限
RUN chown -R owl:owl /app
RUN mkdir -p /root/.cache && chown -R owl:owl /root/.cache
# 切换到非root用户
# 注意:如果需要访问/dev/shm可能仍需要root用户
# USER owl
# 添加健康检查
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD python -c "import sys; sys.exit(0 if __import__('os').path.exists('/app/owl') else 1)"
# 容器启动命令
CMD ["/bin/bash", "-c", "owl-welcome && /bin/bash"]

View File

@@ -1,22 +1,145 @@
@echo off
setlocal enabledelayedexpansion
echo 在Windows上构建Docker镜像...
REM 设置配置变量
set CACHE_DIR=.docker-cache\pip
set BUILD_ARGS=--build-arg BUILDKIT_INLINE_CACHE=1
set COMPOSE_FILE=docker-compose.yml
REM 解析命令行参数
set CLEAN_CACHE=0
set REBUILD=0
set SERVICE=
:parse_args
if "%~1"=="" goto :end_parse_args
if /i "%~1"=="--clean" (
set CLEAN_CACHE=1
shift
goto :parse_args
)
if /i "%~1"=="--rebuild" (
set REBUILD=1
shift
goto :parse_args
)
if /i "%~1"=="--service" (
set SERVICE=%~2
shift
shift
goto :parse_args
)
if /i "%~1"=="--help" (
echo 用法: build_docker.bat [选项]
echo 选项:
echo --clean 清理缓存目录
echo --rebuild 强制重新构建镜像
echo --service 指定要构建的服务名称
echo --help 显示此帮助信息
exit /b 0
)
shift
goto :parse_args
:end_parse_args
REM 检查Docker是否安装
where docker >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo 错误: Docker未安装
echo 请先安装Docker Desktop: https://docs.docker.com/desktop/install/windows-install/
pause
exit /b 1
)
REM 检查Docker是否运行
docker info >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo 错误: Docker未运行
echo 请启动Docker Desktop应用程序
pause
exit /b 1
)
REM 检查docker-compose.yml文件是否存在
if not exist "%COMPOSE_FILE%" (
echo 错误: 未找到%COMPOSE_FILE%文件
echo 请确保在正确的目录中运行此脚本
pause
exit /b 1
)
REM 检查Docker Compose命令
where docker-compose >nul 2>nul
if %ERRORLEVEL% EQU 0 (
set COMPOSE_CMD=docker-compose
) else (
echo 尝试使用新的docker compose命令...
docker compose version >nul 2>nul
if %ERRORLEVEL% EQU 0 (
set COMPOSE_CMD=docker compose
) else (
echo 错误: 未找到Docker Compose命令
echo 请确保Docker Desktop已正确安装
pause
exit /b 1
)
)
REM 设置Docker BuildKit环境变量
set DOCKER_BUILDKIT=1
set COMPOSE_DOCKER_CLI_BUILD=1
echo 启用Docker BuildKit加速构建...
REM 清理缓存(如果指定)
if %CLEAN_CACHE% EQU 1 (
echo 清理缓存目录...
if exist "%CACHE_DIR%" rmdir /s /q "%CACHE_DIR%"
)
REM 创建缓存目录
if not exist ".docker-cache\pip" mkdir .docker-cache\pip
if not exist "%CACHE_DIR%" (
echo 创建缓存目录...
mkdir "%CACHE_DIR%"
)
REM 添加构建时间标记
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YEAR=%dt:~0,4%"
set "MONTH=%dt:~4,2%"
set "DAY=%dt:~6,2%"
set "HOUR=%dt:~8,2%"
set "MINUTE=%dt:~10,2%"
set "BUILD_TIME=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%"
set "BUILD_ARGS=%BUILD_ARGS% --build-arg BUILD_TIME=%BUILD_TIME%"
REM 构建Docker镜像
docker-compose build --build-arg BUILDKIT_INLINE_CACHE=1
echo 开始构建Docker镜像...
if "%SERVICE%"=="" (
if %REBUILD% EQU 1 (
echo 强制重新构建所有服务...
%COMPOSE_CMD% build --no-cache %BUILD_ARGS%
) else (
%COMPOSE_CMD% build %BUILD_ARGS%
)
) else (
if %REBUILD% EQU 1 (
echo 强制重新构建服务 %SERVICE%...
%COMPOSE_CMD% build --no-cache %BUILD_ARGS% %SERVICE%
) else (
echo 构建服务 %SERVICE%...
%COMPOSE_CMD% build %BUILD_ARGS% %SERVICE%
)
)
if %ERRORLEVEL% EQU 0 (
echo Docker镜像构建成功
echo 构建时间: %BUILD_TIME%
echo 可以使用以下命令启动容器:
echo docker-compose up -d
echo %COMPOSE_CMD% up -d
) else (
echo Docker镜像构建失败请检查错误信息。
)

View File

@@ -1,41 +1,150 @@
#!/bin/bash
# 设置配置变量
CACHE_DIR=".docker-cache/pip"
BUILD_ARGS="--build-arg BUILDKIT_INLINE_CACHE=1"
COMPOSE_FILE="docker-compose.yml"
CLEAN_CACHE=0
REBUILD=0
SERVICE=""
# 解析命令行参数
while [[ $# -gt 0 ]]; do
case "$1" in
--clean)
CLEAN_CACHE=1
shift
;;
--rebuild)
REBUILD=1
shift
;;
--service)
SERVICE="$2"
shift 2
;;
--help)
echo "用法: ./build_docker.sh [选项]"
echo "选项:"
echo " --clean 清理缓存目录"
echo " --rebuild 强制重新构建镜像"
echo " --service 指定要构建的服务名称"
echo " --help 显示此帮助信息"
exit 0
;;
*)
echo "未知选项: $1"
echo "使用 --help 查看帮助"
exit 1
;;
esac
done
# 检测操作系统类型
OS_TYPE=$(uname -s)
echo "检测到操作系统: $OS_TYPE"
# 检查Docker是否安装
if ! command -v docker &> /dev/null; then
echo "错误: Docker未安装"
echo "请先安装Docker: https://docs.docker.com/get-docker/"
exit 1
fi
# 检查Docker是否运行
if ! docker info &> /dev/null; then
echo "错误: Docker未运行"
echo "请启动Docker服务"
exit 1
fi
# 检查docker-compose.yml文件是否存在
if [ ! -f "$COMPOSE_FILE" ]; then
echo "错误: 未找到$COMPOSE_FILE文件"
echo "请确保在正确的目录中运行此脚本"
exit 1
fi
# 设置Docker BuildKit环境变量
export DOCKER_BUILDKIT=1
export COMPOSE_DOCKER_CLI_BUILD=1
echo "启用Docker BuildKit加速构建..."
# 清理缓存(如果指定)
if [ $CLEAN_CACHE -eq 1 ]; then
echo "清理缓存目录..."
rm -rf "$CACHE_DIR"
fi
# 创建缓存目录
mkdir -p .docker-cache/pip
mkdir -p "$CACHE_DIR"
# 添加构建时间标记
BUILD_TIME=$(date +"%Y%m%d_%H%M%S")
BUILD_ARGS="$BUILD_ARGS --build-arg BUILD_TIME=$BUILD_TIME"
# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 获取项目根目录(脚本所在目录的父目录)
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
echo "脚本目录: $SCRIPT_DIR"
echo "项目根目录: $PROJECT_ROOT"
# 切换到项目根目录
cd "$PROJECT_ROOT"
# 检查Docker Compose命令
if command -v docker-compose &> /dev/null; then
COMPOSE_CMD="docker-compose"
echo "使用 docker-compose 命令"
elif docker compose version &> /dev/null; then
COMPOSE_CMD="docker compose"
echo "使用 docker compose 命令"
else
echo "错误: 未找到Docker Compose命令"
echo "请安装Docker Compose: https://docs.docker.com/compose/install/"
exit 1
fi
# 检测CPU核心数用于并行构建
CPU_CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 2)
if [ $CPU_CORES -gt 2 ]; then
PARALLEL_FLAG="--parallel"
echo "检测到${CPU_CORES}个CPU核心启用并行构建..."
else
PARALLEL_FLAG=""
fi
# 构建命令基础部分
BUILD_CMD="$COMPOSE_CMD -f \"$SCRIPT_DIR/docker-compose.yml\" build $PARALLEL_FLAG --build-arg BUILDKIT_INLINE_CACHE=1"
# 根据操作系统类型执行不同的命令
if [[ "$OS_TYPE" == "Darwin" ]]; then
# macOS
echo "在macOS上构建Docker镜像..."
docker-compose build --build-arg BUILDKIT_INLINE_CACHE=1
eval $BUILD_CMD
elif [[ "$OS_TYPE" == "Linux" ]]; then
# Linux
echo "在Linux上构建Docker镜像..."
docker-compose build --parallel --build-arg BUILDKIT_INLINE_CACHE=1
eval $BUILD_CMD
elif [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
# Windows
echo "在Windows上构建Docker镜像..."
docker-compose build --build-arg BUILDKIT_INLINE_CACHE=1
eval $BUILD_CMD
else
echo "未知操作系统,尝试使用标准命令构建..."
docker-compose build --build-arg BUILDKIT_INLINE_CACHE=1
eval $BUILD_CMD
fi
# 检查构建结果
if [ $? -eq 0 ]; then
echo "Docker镜像构建成功"
echo "构建时间: $BUILD_TIME"
echo "可以使用以下命令启动容器:"
echo "docker-compose up -d"
echo "$COMPOSE_CMD -f \"$SCRIPT_DIR/docker-compose.yml\" up -d"
else
echo "Docker镜像构建失败请检查错误信息。"
exit 1
fi

View File

@@ -17,7 +17,7 @@ echo Docker已安装
REM 检查Docker Compose是否安装
where docker-compose >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo 警告: Docker Compose未找到尝试使用新的docker compose命令
echo 警告: Docker-Compose未找到尝试使用新的docker compose命令
docker compose version >nul 2>nul
if %ERRORLEVEL% NEQ 0 (
echo 错误: Docker Compose未安装
@@ -27,9 +27,11 @@ if %ERRORLEVEL% NEQ 0 (
exit /b 1
) else (
echo 使用新的docker compose命令
set COMPOSE_CMD=docker compose
)
) else (
echo Docker Compose已安装
echo Docker-Compose已安装
set COMPOSE_CMD=docker-compose
)
REM 检查Docker是否正在运行
@@ -55,6 +57,6 @@ if not exist "owl\.env" (
echo 所有检查完成您的系统已准备好构建和运行OWL项目的Docker容器
echo 请运行以下命令构建Docker镜像:
echo build_docker.bat
echo %COMPOSE_CMD% build
pause

View File

@@ -1,8 +1,8 @@
services:
owl:
build:
context: .
dockerfile: Dockerfile
context: ..
dockerfile: .container/Dockerfile
args:
# 构建参数
BUILDKIT_INLINE_CACHE: 1

View File

@@ -1,6 +1,12 @@
@echo off
setlocal enabledelayedexpansion
REM 定义配置变量
set SERVICE_NAME=owl
set PYTHON_CMD=xvfb-python
set MAX_WAIT_SECONDS=60
set CHECK_INTERVAL_SECONDS=2
REM 检查参数
if "%~1"=="" (
echo 用法: run_in_docker.bat [脚本名称] "你的问题"
@@ -37,20 +43,69 @@ if not exist "owl\!SCRIPT_NAME!" (
echo 使用脚本: !SCRIPT_NAME!
echo 查询内容: !QUERY!
REM 从docker-compose.yml获取服务名称如果文件存在
if exist ".container\docker-compose.yml" (
for /f "tokens=*" %%a in ('findstr /r "^ [a-zA-Z0-9_-]*:" .container\docker-compose.yml') do (
set line=%%a
set service=!line:~2,-1!
if not "!service!"=="" (
REM 使用第一个找到的服务名称
set SERVICE_NAME=!service!
echo 从docker-compose.yml检测到服务名称: !SERVICE_NAME!
goto :found_service
)
)
)
:found_service
REM 确保Docker容器正在运行
docker-compose ps | findstr "owl.*Up" > nul
docker-compose ps | findstr "!SERVICE_NAME!.*Up" > nul
if errorlevel 1 (
echo 启动Docker容器...
docker-compose up -d
REM 等待容器启动
REM 使用循环检查容器是否就绪
echo 等待容器启动...
timeout /t 5 /nobreak > nul
set /a total_wait=0
:wait_loop
timeout /t !CHECK_INTERVAL_SECONDS! /nobreak > nul
set /a total_wait+=!CHECK_INTERVAL_SECONDS!
docker-compose ps | findstr "!SERVICE_NAME!.*Up" > nul
if errorlevel 1 (
if !total_wait! LSS !MAX_WAIT_SECONDS! (
echo 容器尚未就绪,已等待!total_wait!秒,继续等待...
goto :wait_loop
) else (
echo 错误:容器启动超时,已等待!MAX_WAIT_SECONDS!秒
echo 请检查Docker容器状态docker-compose ps
exit /b 1
)
) else (
echo 容器已就绪,共等待了!total_wait!秒
)
)
REM 检查容器中是否存在xvfb-python命令
echo 检查容器中的命令...
docker-compose exec -T !SERVICE_NAME! which !PYTHON_CMD! > nul 2>&1
if errorlevel 1 (
echo 警告:容器中未找到!PYTHON_CMD!命令尝试使用python替代
set PYTHON_CMD=python
REM 检查python命令是否存在
docker-compose exec -T !SERVICE_NAME! which python > nul 2>&1
if errorlevel 1 (
echo 错误容器中未找到python命令
echo 请检查容器配置
exit /b 1
)
)
REM 在容器中运行指定的脚本,传递查询参数
echo 在Docker容器中运行脚本...
docker-compose exec -T owl xvfb-python !SCRIPT_NAME! "!QUERY!"
echo 在Docker容器中使用!PYTHON_CMD!运行脚本...
docker-compose exec -T !SERVICE_NAME! !PYTHON_CMD! !SCRIPT_NAME! "!QUERY!"
if errorlevel 0 (
echo 查询完成!

View File

@@ -1,5 +1,11 @@
#!/bin/bash
# 定义配置变量
SERVICE_NAME="owl"
PYTHON_CMD="xvfb-python"
MAX_WAIT_SECONDS=60
CHECK_INTERVAL_SECONDS=2
# 检测操作系统类型
OS_TYPE=$(uname -s)
echo "检测到操作系统: $OS_TYPE"
@@ -29,53 +35,100 @@ else
QUERY="$1"
fi
# 根据操作系统类型设置脚本路径检查方式
if [[ "$OS_TYPE" == "Darwin" ]] || [[ "$OS_TYPE" == "Linux" ]]; then
# macOS 或 Linux
if [ ! -f "owl/$SCRIPT_NAME" ]; then
echo "错误: 脚本 'owl/$SCRIPT_NAME' 不存在"
echo "可用的脚本有:"
ls -1 owl/*.py | grep -v "__"
exit 1
fi
else
# Windows
if [ ! -f "owl/$SCRIPT_NAME" ]; then
echo "错误: 脚本 'owl/$SCRIPT_NAME' 不存在"
echo "可用的脚本有:"
# 检查脚本是否存在
if [ ! -f "owl/$SCRIPT_NAME" ]; then
echo "错误: 脚本 'owl/$SCRIPT_NAME' 不存在"
echo "可用的脚本有:"
if [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
find owl -name "*.py" | grep -v "__" | sed 's/\\/\//g'
exit 1
else
ls -1 owl/*.py | grep -v "__"
fi
exit 1
fi
echo "使用脚本: $SCRIPT_NAME"
echo "查询内容: $QUERY"
# 确保Docker容器正在运行
CONTAINER_RUNNING=$(docker-compose ps | grep -c "owl.*Up" || true)
if [ "$CONTAINER_RUNNING" -eq 0 ]; then
echo "启动Docker容器..."
docker-compose up -d
# 等待容器启动
echo "等待容器启动..."
sleep 5
# 从docker-compose.yml获取服务名称如果文件存在
if [ -f ".container/docker-compose.yml" ]; then
DETECTED_SERVICE=$(grep -E "^ [a-zA-Z0-9_-]*:" .container/docker-compose.yml | head -1 | sed 's/^ \(.*\):.*/\1/')
if [ ! -z "$DETECTED_SERVICE" ]; then
SERVICE_NAME="$DETECTED_SERVICE"
echo "从docker-compose.yml检测到服务名称: $SERVICE_NAME"
fi
fi
# 直接在容器中运行指定的脚本,传递查询参数
echo "在Docker容器中运行脚本..."
# 检查Docker Compose命令
if command -v docker-compose &> /dev/null; then
COMPOSE_CMD="docker-compose"
elif docker compose version &> /dev/null; then
COMPOSE_CMD="docker compose"
else
echo "错误: 未找到Docker Compose命令"
exit 1
fi
# 确保Docker容器正在运行
CONTAINER_RUNNING=$($COMPOSE_CMD ps | grep -c "$SERVICE_NAME.*Up" || true)
if [ "$CONTAINER_RUNNING" -eq 0 ]; then
echo "启动Docker容器..."
$COMPOSE_CMD up -d
# 使用循环检查容器是否就绪
echo "等待容器启动..."
TOTAL_WAIT=0
while [ $TOTAL_WAIT -lt $MAX_WAIT_SECONDS ]; do
sleep $CHECK_INTERVAL_SECONDS
TOTAL_WAIT=$((TOTAL_WAIT + CHECK_INTERVAL_SECONDS))
CONTAINER_RUNNING=$($COMPOSE_CMD ps | grep -c "$SERVICE_NAME.*Up" || true)
if [ "$CONTAINER_RUNNING" -gt 0 ]; then
echo "容器已就绪,共等待了 $TOTAL_WAIT"
break
else
echo "容器尚未就绪,已等待 $TOTAL_WAIT 秒,继续等待..."
fi
done
if [ "$CONTAINER_RUNNING" -eq 0 ]; then
echo "错误:容器启动超时,已等待 $MAX_WAIT_SECONDS"
echo "请检查Docker容器状态$COMPOSE_CMD ps"
exit 1
fi
fi
# 检查容器中是否存在指定的Python命令
echo "检查容器中的命令..."
if ! $COMPOSE_CMD exec -T $SERVICE_NAME which $PYTHON_CMD &> /dev/null; then
echo "警告:容器中未找到 $PYTHON_CMD 命令尝试使用python替代"
PYTHON_CMD="python"
# 检查python命令是否存在
if ! $COMPOSE_CMD exec -T $SERVICE_NAME which python &> /dev/null; then
echo "错误容器中未找到python命令"
echo "请检查容器配置"
exit 1
fi
fi
# 在容器中运行指定的脚本,传递查询参数
echo "在Docker容器中使用 $PYTHON_CMD 运行脚本..."
# 根据操作系统类型执行不同的命令
if [[ "$OS_TYPE" == MINGW* ]] || [[ "$OS_TYPE" == CYGWIN* ]] || [[ "$OS_TYPE" == MSYS* ]]; then
# Windows可能需要特殊处理引号
winpty docker-compose exec -T owl xvfb-python $SCRIPT_NAME "$QUERY"
winpty $COMPOSE_CMD exec -T $SERVICE_NAME $PYTHON_CMD $SCRIPT_NAME "$QUERY"
RESULT=$?
else
# macOS 或 Linux
docker-compose exec -T owl xvfb-python $SCRIPT_NAME "$QUERY"
$COMPOSE_CMD exec -T $SERVICE_NAME $PYTHON_CMD $SCRIPT_NAME "$QUERY"
RESULT=$?
fi
# 检查命令执行结果
if [ $? -eq 0 ]; then
if [ $RESULT -eq 0 ]; then
echo "查询完成!"
else
echo "查询执行失败,请检查错误信息。"