129 lines
2.8 KiB
Batchfile
129 lines
2.8 KiB
Batchfile
@echo off
|
||
REM 后端Docker镜像构建脚本 (Windows版本)
|
||
REM 用于构建若依后端应用的Docker镜像
|
||
|
||
setlocal enabledelayedexpansion
|
||
|
||
REM 脚本配置
|
||
set "SCRIPT_DIR=%~dp0"
|
||
set "PROJECT_ROOT=%SCRIPT_DIR%..\..\"
|
||
set "IMAGE_NAME=anxin-backend"
|
||
set "IMAGE_TAG=latest"
|
||
set "NO_CACHE="
|
||
set "CLEAN_BUILD="
|
||
|
||
REM 解析命令行参数
|
||
:parse_args
|
||
if "%~1"=="" goto :check_docker
|
||
if "%~1"=="-t" (
|
||
set "IMAGE_TAG=%~2"
|
||
shift
|
||
shift
|
||
goto :parse_args
|
||
)
|
||
if "%~1"=="--tag" (
|
||
set "IMAGE_TAG=%~2"
|
||
shift
|
||
shift
|
||
goto :parse_args
|
||
)
|
||
if "%~1"=="-n" (
|
||
set "IMAGE_NAME=%~2"
|
||
shift
|
||
shift
|
||
goto :parse_args
|
||
)
|
||
if "%~1"=="--name" (
|
||
set "IMAGE_NAME=%~2"
|
||
shift
|
||
shift
|
||
goto :parse_args
|
||
)
|
||
if "%~1"=="--no-cache" (
|
||
set "NO_CACHE=--no-cache"
|
||
shift
|
||
goto :parse_args
|
||
)
|
||
if "%~1"=="--clean" (
|
||
set "CLEAN_BUILD=true"
|
||
shift
|
||
goto :parse_args
|
||
)
|
||
if "%~1"=="-h" goto :show_help
|
||
if "%~1"=="--help" goto :show_help
|
||
|
||
echo [ERROR] 未知参数: %~1
|
||
goto :show_help
|
||
|
||
:show_help
|
||
echo.
|
||
echo 后端Docker镜像构建脚本
|
||
echo.
|
||
echo 用法: %~nx0 [选项]
|
||
echo.
|
||
echo 选项:
|
||
echo -t, --tag TAG 设置镜像标签 (默认: latest)
|
||
echo -n, --name NAME 设置镜像名称 (默认: anxin-backend)
|
||
echo --no-cache 不使用缓存构建
|
||
echo --clean 构建前清理Maven缓存
|
||
echo -h, --help 显示此帮助信息
|
||
echo.
|
||
echo 示例:
|
||
echo %~nx0 # 使用默认设置构建
|
||
echo %~nx0 -t v1.0.0 # 构建并标记为v1.0.0
|
||
echo %~nx0 --no-cache # 不使用缓存构建
|
||
echo %~nx0 --clean -t dev # 清理后构建dev版本
|
||
echo.
|
||
exit /b 0
|
||
|
||
:check_docker
|
||
echo [INFO] 检查Docker环境...
|
||
docker --version >nul 2>&1
|
||
if errorlevel 1 (
|
||
echo [ERROR] Docker未安装或不在PATH中
|
||
exit /b 1
|
||
)
|
||
|
||
docker info >nul 2>&1
|
||
if errorlevel 1 (
|
||
echo [ERROR] Docker守护进程未运行
|
||
exit /b 1
|
||
)
|
||
|
||
:clean_maven
|
||
if "%CLEAN_BUILD%"=="true" (
|
||
echo [INFO] 清理Maven缓存...
|
||
cd /d "%PROJECT_ROOT%"
|
||
where mvn >nul 2>&1
|
||
if not errorlevel 1 (
|
||
mvn clean
|
||
) else (
|
||
echo [WARNING] Maven未安装,跳过清理步骤
|
||
)
|
||
)
|
||
|
||
:build_image
|
||
echo [INFO] 开始构建Docker镜像...
|
||
echo [INFO] 项目根目录: %PROJECT_ROOT%
|
||
echo [INFO] 镜像名称: %IMAGE_NAME%:%IMAGE_TAG%
|
||
|
||
cd /d "%PROJECT_ROOT%"
|
||
|
||
echo [INFO] 执行构建命令...
|
||
docker build -f docker/backend/Dockerfile -t %IMAGE_NAME%:%IMAGE_TAG% %NO_CACHE% .
|
||
|
||
if errorlevel 1 (
|
||
echo [ERROR] Docker镜像构建失败
|
||
exit /b 1
|
||
)
|
||
|
||
echo [SUCCESS] Docker镜像构建成功: %IMAGE_NAME%:%IMAGE_TAG%
|
||
|
||
:show_image_info
|
||
echo [INFO] 镜像信息:
|
||
docker images %IMAGE_NAME%:%IMAGE_TAG%
|
||
|
||
echo [SUCCESS] 构建完成!
|
||
echo [INFO] 运行镜像: docker run -d -p 8080:8080 --name anxin-backend-container %IMAGE_NAME%:%IMAGE_TAG%
|
||
|
||
endlocal |