anxin-ruoyi/docker/scripts/setup-env.bat
2026-01-05 01:46:20 +08:00

254 lines
5.6 KiB
Batchfile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@echo off
REM 环境设置脚本 (Windows版本)
REM 用于初始化Docker部署环境和配置文件
setlocal enabledelayedexpansion
REM 设置颜色代码
set "RED=[91m"
set "GREEN=[92m"
set "YELLOW=[93m"
set "BLUE=[94m"
set "NC=[0m"
REM 日志函数
:log_info
echo %BLUE%[INFO]%NC% %~1
goto :eof
:log_success
echo %GREEN%[SUCCESS]%NC% %~1
goto :eof
:log_warning
echo %YELLOW%[WARNING]%NC% %~1
goto :eof
:log_error
echo %RED%[ERROR]%NC% %~1
goto :eof
REM 检查必要的命令
:check_requirements
call :log_info "检查系统要求..."
docker --version >nul 2>&1
if errorlevel 1 (
call :log_error "Docker 未安装,请先安装 Docker Desktop"
exit /b 1
)
docker-compose --version >nul 2>&1
if errorlevel 1 (
call :log_error "Docker Compose 未安装,请先安装 Docker Compose"
exit /b 1
)
call :log_success "系统要求检查通过"
goto :eof
REM 创建必要的目录
:create_directories
call :log_info "创建必要的目录结构..."
REM 数据目录
if not exist "data" mkdir data
if not exist "data\mysql" mkdir data\mysql
if not exist "data\logs" mkdir data\logs
if not exist "data\configs" mkdir data\configs
if not exist "data\dev" mkdir data\dev
if not exist "data\dev\mysql" mkdir data\dev\mysql
if not exist "data\dev\logs" mkdir data\dev\logs
if not exist "data\dev\configs" mkdir data\dev\configs
if not exist "data\staging" mkdir data\staging
if not exist "data\staging\mysql" mkdir data\staging\mysql
if not exist "data\staging\logs" mkdir data\staging\logs
if not exist "data\staging\configs" mkdir data\staging\configs
if not exist "data\prod" mkdir data\prod
if not exist "data\prod\mysql" mkdir data\prod\mysql
if not exist "data\prod\logs" mkdir data\prod\logs
if not exist "data\prod\configs" mkdir data\prod\configs
REM 日志目录
if not exist "logs" mkdir logs
if not exist "logs\dev" mkdir logs\dev
if not exist "logs\staging" mkdir logs\staging
if not exist "logs\prod" mkdir logs\prod
call :log_success "目录结构创建完成"
goto :eof
REM 设置环境配置
:setup_environment
set env=%~1
if "%env%"=="" set env=development
call :log_info "设置 %env% 环境配置..."
REM 检查环境配置文件是否存在
if not exist "environments\.env.%env%" (
call :log_error "环境配置文件 .env.%env% 不存在"
exit /b 1
)
REM 复制环境配置文件
copy "environments\.env.%env%" ".env" >nul
REM 复制Docker Compose配置
copy "docker-compose.yml.template" "docker-compose.yml" >nul
REM 复制配置文件模板
copy "configs\nginx.conf.template" "configs\nginx.conf" >nul
copy "configs\application-docker.yml.template" "configs\application-docker.yml" >nul
copy "configs\my.cnf.template" "configs\my.cnf" >nul
call :log_success "%env% 环境配置设置完成"
goto :eof
REM 验证配置
:validate_config
call :log_info "验证配置文件..."
REM 检查 .env 文件
if not exist ".env" (
call :log_error ".env 文件不存在,请先运行环境设置"
exit /b 1
)
REM 检查 docker-compose.yml 文件
if not exist "docker-compose.yml" (
call :log_error "docker-compose.yml 文件不存在"
exit /b 1
)
REM 验证 Docker Compose 配置语法
docker-compose config >nul 2>&1
if errorlevel 1 (
call :log_error "Docker Compose 配置文件语法错误"
exit /b 1
)
call :log_success "配置文件验证通过"
goto :eof
REM 显示帮助信息
:show_help
echo 用法: %~nx0 [选项] [环境]
echo.
echo 选项:
echo -h, --help 显示此帮助信息
echo -c, --check 仅检查系统要求
echo -v, --validate 仅验证配置
echo.
echo 环境:
echo development 开发环境 (默认)
echo staging 测试环境
echo production 生产环境
echo.
echo 示例:
echo %~nx0 # 设置开发环境
echo %~nx0 production # 设置生产环境
echo %~nx0 --check # 仅检查系统要求
goto :eof
REM 主函数
:main
set environment=development
set check_only=false
set validate_only=false
REM 解析命令行参数
:parse_args
if "%~1"=="" goto :start_setup
if "%~1"=="-h" goto :show_help_and_exit
if "%~1"=="--help" goto :show_help_and_exit
if "%~1"=="-c" (
set check_only=true
shift
goto :parse_args
)
if "%~1"=="--check" (
set check_only=true
shift
goto :parse_args
)
if "%~1"=="-v" (
set validate_only=true
shift
goto :parse_args
)
if "%~1"=="--validate" (
set validate_only=true
shift
goto :parse_args
)
if "%~1"=="development" (
set environment=%~1
shift
goto :parse_args
)
if "%~1"=="staging" (
set environment=%~1
shift
goto :parse_args
)
if "%~1"=="production" (
set environment=%~1
shift
goto :parse_args
)
call :log_error "未知参数: %~1"
call :show_help
exit /b 1
:show_help_and_exit
call :show_help
exit /b 0
:start_setup
REM 切换到docker目录
cd /d "%~dp0\.."
call :log_info "开始设置Docker部署环境..."
REM 检查系统要求
call :check_requirements
if errorlevel 1 exit /b 1
if "%check_only%"=="true" (
call :log_success "系统要求检查完成"
exit /b 0
)
if "%validate_only%"=="true" (
call :validate_config
if errorlevel 1 exit /b 1
call :log_success "配置验证完成"
exit /b 0
)
REM 创建目录结构
call :create_directories
REM 设置环境配置
call :setup_environment "%environment%"
if errorlevel 1 exit /b 1
REM 验证配置
call :validate_config
if errorlevel 1 exit /b 1
call :log_success "Docker部署环境设置完成"
call :log_info "下一步:"
call :log_info "1. 检查并修改 .env 文件中的配置"
call :log_info "2. 运行 'scripts\build.bat' 构建镜像"
call :log_info "3. 运行 'scripts\deploy.bat start' 启动服务"
goto :eof
REM 执行主函数
call :main %*