@echo off REM RAG 系统 Docker 启动脚本 (Windows) REM 用法: start.bat [dev|prod] setlocal enabledelayedexpansion REM 切换到脚本所在目录 cd /d "%~dp0" REM 设置默认命令 set COMMAND=%1 if "%COMMAND%"=="" set COMMAND=dev REM 检查 Docker 是否安装 where docker >nul 2>nul if %ERRORLEVEL% neq 0 ( echo [ERROR] Docker 未安装,请先安装 Docker Desktop exit /b 1 ) REM 检查 docker-compose 是否安装 where docker-compose >nul 2>nul if %ERRORLEVEL% equ 0 ( set DOCKER_COMPOSE_CMD=docker-compose ) else ( docker compose version >nul 2>nul if %ERRORLEVEL% equ 0 ( set DOCKER_COMPOSE_CMD=docker compose ) else ( echo [ERROR] Docker Compose 未安装 exit /b 1 ) ) echo [INFO] Docker 和 Docker Compose 已安装 REM 检查 .env 文件 if not exist "..\\.env" ( echo [WARN] .env 文件不存在,从 .env.example 复制 if exist "..\\.env.example" ( copy "..\\.env.example" "..\\.env" >nul echo [INFO] .env 文件已创建,请根据需要修改配置 ) else ( echo [ERROR] .env.example 文件不存在 exit /b 1 ) ) REM 执行命令 if "%COMMAND%"=="dev" goto start_dev if "%COMMAND%"=="prod" goto start_prod if "%COMMAND%"=="stop" goto stop_all if "%COMMAND%"=="stop-dev" goto stop_dev if "%COMMAND%"=="stop-prod" goto stop_prod if "%COMMAND%"=="help" goto show_help if "%COMMAND%"=="-h" goto show_help if "%COMMAND%"=="--help" goto show_help echo [ERROR] 未知命令: %COMMAND% goto show_help :start_dev echo [INFO] 启动开发环境... %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml up -d --build if %ERRORLEVEL% neq 0 ( echo [ERROR] 启动失败 exit /b 1 ) echo [INFO] 等待服务启动... timeout /t 10 /nobreak >nul echo. echo [INFO] 开发环境已启动! echo. echo 访问地址: echo - API 文档: http://localhost:8000/docs echo - pgAdmin: http://localhost:5050 (admin@example.com / admin) echo. echo 查看日志: echo %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml logs -f echo. echo 停止服务: echo %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml down goto end :start_prod echo [INFO] 启动生产环境... %DOCKER_COMPOSE_CMD% -f docker-compose.yml up -d --build if %ERRORLEVEL% neq 0 ( echo [ERROR] 启动失败 exit /b 1 ) echo [INFO] 等待服务启动... timeout /t 10 /nobreak >nul echo. echo [INFO] 生产环境已启动! echo. echo 访问地址: echo - API 文档: http://localhost:8000/docs echo. echo 查看日志: echo %DOCKER_COMPOSE_CMD% -f docker-compose.yml logs -f echo. echo 停止服务: echo %DOCKER_COMPOSE_CMD% -f docker-compose.yml down goto end :stop_all echo [INFO] 停止所有服务... %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml down 2>nul %DOCKER_COMPOSE_CMD% -f docker-compose.yml down 2>nul echo [INFO] 服务已停止 goto end :stop_dev echo [INFO] 停止开发环境... %DOCKER_COMPOSE_CMD% -f docker-compose.dev.yml down echo [INFO] 开发环境已停止 goto end :stop_prod echo [INFO] 停止生产环境... %DOCKER_COMPOSE_CMD% -f docker-compose.yml down echo [INFO] 生产环境已停止 goto end :show_help echo 用法: %~nx0 [命令] echo. echo 命令: echo dev 启动开发环境 echo prod 启动生产环境 echo stop 停止所有服务 echo stop-dev 停止开发环境 echo stop-prod 停止生产环境 echo help 显示帮助信息 echo. echo 示例: echo %~nx0 dev # 启动开发环境 echo %~nx0 prod # 启动生产环境 echo %~nx0 stop # 停止所有服务 goto end :end endlocal