| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- @echo off
- chcp 65001 > nul
- setlocal enabledelayedexpansion
- :: =============================================================
- :: 药易采 - Windows 开发环境启动脚本
- :: 用法:双击运行 或 start-dev.bat [start|stop|build]
- :: 依赖:Docker Desktop、JDK 17、Maven 3.8+
- :: =============================================================
- title 药易采 - 开发环境
- set APP_NAME=zhijiayun-pharmacy
- set JAR_NAME=zhijiayun-gateway-1.0.0.jar
- set PROJECT_DIR=%~dp0..
- set JAR_PATH=%PROJECT_DIR%\zhijiayun-gateway\target\%JAR_NAME%
- set LOG_DIR=%PROJECT_DIR%\logs
- :: JVM 参数
- set JAVA_OPTS=-Xms256m -Xmx768m -XX:+UseG1GC -Dfile.encoding=UTF-8 -Duser.timezone=Asia/Shanghai
- set ACTION=%1
- if "%ACTION%"=="" set ACTION=start
- if "%ACTION%"=="start" goto :do_start
- if "%ACTION%"=="stop" goto :do_stop
- if "%ACTION%"=="build" goto :do_build
- if "%ACTION%"=="infra" goto :do_infra
- goto :show_help
- :: ============================================================
- :do_infra
- :: 启动 Docker 基础设施(MySQL + Redis)
- echo [INFO] 检查 Docker 是否运行...
- docker info > nul 2>&1
- if errorlevel 1 (
- echo [ERROR] Docker 未运行,请先启动 Docker Desktop
- pause
- exit /b 1
- )
- echo [INFO] 启动 MySQL 容器...
- docker start mysql8 > nul 2>&1 || (
- echo [INFO] 创建 MySQL 容器...
- docker run -d ^
- --name mysql8 ^
- -e MYSQL_ROOT_PASSWORD=Root@123456 ^
- -e MYSQL_DATABASE=zhijiayun_pharmacy ^
- -e TZ=Asia/Shanghai ^
- -p 3308:3306 ^
- mysql:8.0 ^
- --character-set-server=utf8mb4 ^
- --collation-server=utf8mb4_unicode_ci ^
- --default-time-zone=+08:00
- )
- echo [INFO] 启动 Redis 容器...
- docker start redis7 > nul 2>&1 || (
- echo [INFO] 创建 Redis 容器...
- docker run -d ^
- --name redis7 ^
- -p 6379:6379 ^
- redis:7 ^
- redis-server --requirepass 123456
- )
- echo [INFO] 等待数据库就绪...
- timeout /t 5 /nobreak > nul
- echo [INFO] ✅ 基础设施已启动
- echo MySQL: localhost:3308 (root / Root@123456)
- echo Redis: localhost:6379 (密码: 123456)
- goto :eof
- :: ============================================================
- :do_build
- echo [INFO] Maven 打包(跳过测试)...
- cd /d "%PROJECT_DIR%"
- call mvn clean package -DskipTests -pl zhijiayun-gateway -am
- if errorlevel 1 (
- echo [ERROR] 构建失败,请查看上方错误信息
- pause
- exit /b 1
- )
- echo [INFO] ✅ 构建完成:%JAR_PATH%
- goto :eof
- :: ============================================================
- :do_start
- :: 检查 JAR 是否存在,若不存在则自动构建
- if not exist "%JAR_PATH%" (
- echo [WARN] JAR 包不存在,自动执行构建...
- call :do_build
- )
- :: 确保基础设施运行
- call :do_infra
- :: 检查端口是否被占用
- netstat -ano | findstr ":8001 " | findstr "LISTENING" > nul 2>&1
- if not errorlevel 1 (
- echo [WARN] 端口 8001 已被占用,请先停止旧进程
- netstat -ano | findstr ":8001 " | findstr "LISTENING"
- pause
- exit /b 1
- )
- echo.
- echo [INFO] 启动 %APP_NAME%(开发环境 dev profile)...
- echo [INFO] 日志目录:%LOG_DIR%
- echo [INFO] 访问地址:http://localhost:8001
- echo [INFO] 按 Ctrl+C 停止应用
- echo.
- if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
- java %JAVA_OPTS% ^
- -jar "%JAR_PATH%" ^
- --spring.profiles.active=dev
- goto :eof
- :: ============================================================
- :do_stop
- echo [INFO] 查找并停止 %APP_NAME%...
- for /f "tokens=5" %%i in ('netstat -ano ^| findstr ":8001 " ^| findstr "LISTENING"') do (
- echo [INFO] 终止进程 PID=%%i
- taskkill /PID %%i /F > nul 2>&1
- )
- echo [INFO] ✅ 应用已停止
- goto :eof
- :: ============================================================
- :show_help
- echo 用法: start-dev.bat [命令]
- echo.
- echo (无参数) 启动应用(自动构建+启动基础设施)
- echo start 同上
- echo stop 停止应用(释放 8001 端口)
- echo build 仅 Maven 打包,不启动
- echo infra 仅启动 Docker MySQL/Redis,不启动应用
- echo.
- pause
- goto :eof
|