Spaces:
Configuration error
Configuration error
File size: 3,495 Bytes
b9d9271 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
@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 "%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镜像
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 %COMPOSE_CMD% up -d
) else (
echo Docker镜像构建失败,请检查错误信息。
)
pause |