optimization bat
Browse files- .container/build_docker.bat +126 -3
.container/build_docker.bat
CHANGED
@@ -1,22 +1,145 @@
|
|
1 |
@echo off
|
|
|
|
|
2 |
echo 在Windows上构建Docker镜像...
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
REM 设置Docker BuildKit环境变量
|
5 |
set DOCKER_BUILDKIT=1
|
6 |
set COMPOSE_DOCKER_CLI_BUILD=1
|
7 |
|
8 |
echo 启用Docker BuildKit加速构建...
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
REM 创建缓存目录
|
11 |
-
if not exist "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
|
13 |
REM 构建Docker镜像
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
if %ERRORLEVEL% EQU 0 (
|
17 |
echo Docker镜像构建成功!
|
|
|
18 |
echo 可以使用以下命令启动容器:
|
19 |
-
echo
|
20 |
) else (
|
21 |
echo Docker镜像构建失败,请检查错误信息。
|
22 |
)
|
|
|
1 |
@echo off
|
2 |
+
setlocal enabledelayedexpansion
|
3 |
+
|
4 |
echo 在Windows上构建Docker镜像...
|
5 |
|
6 |
+
REM 设置配置变量
|
7 |
+
set CACHE_DIR=.docker-cache\pip
|
8 |
+
set BUILD_ARGS=--build-arg BUILDKIT_INLINE_CACHE=1
|
9 |
+
set COMPOSE_FILE=docker-compose.yml
|
10 |
+
|
11 |
+
REM 解析命令行参数
|
12 |
+
set CLEAN_CACHE=0
|
13 |
+
set REBUILD=0
|
14 |
+
set SERVICE=
|
15 |
+
|
16 |
+
:parse_args
|
17 |
+
if "%~1"=="" goto :end_parse_args
|
18 |
+
if /i "%~1"=="--clean" (
|
19 |
+
set CLEAN_CACHE=1
|
20 |
+
shift
|
21 |
+
goto :parse_args
|
22 |
+
)
|
23 |
+
if /i "%~1"=="--rebuild" (
|
24 |
+
set REBUILD=1
|
25 |
+
shift
|
26 |
+
goto :parse_args
|
27 |
+
)
|
28 |
+
if /i "%~1"=="--service" (
|
29 |
+
set SERVICE=%~2
|
30 |
+
shift
|
31 |
+
shift
|
32 |
+
goto :parse_args
|
33 |
+
)
|
34 |
+
if /i "%~1"=="--help" (
|
35 |
+
echo 用法: build_docker.bat [选项]
|
36 |
+
echo 选项:
|
37 |
+
echo --clean 清理缓存目录
|
38 |
+
echo --rebuild 强制重新构建镜像
|
39 |
+
echo --service 指定要构建的服务名称
|
40 |
+
echo --help 显示此帮助信息
|
41 |
+
exit /b 0
|
42 |
+
)
|
43 |
+
shift
|
44 |
+
goto :parse_args
|
45 |
+
:end_parse_args
|
46 |
+
|
47 |
+
REM 检查Docker是否安装
|
48 |
+
where docker >nul 2>nul
|
49 |
+
if %ERRORLEVEL% NEQ 0 (
|
50 |
+
echo 错误: Docker未安装
|
51 |
+
echo 请先安装Docker Desktop: https://docs.docker.com/desktop/install/windows-install/
|
52 |
+
pause
|
53 |
+
exit /b 1
|
54 |
+
)
|
55 |
+
|
56 |
+
REM 检查Docker是否运行
|
57 |
+
docker info >nul 2>nul
|
58 |
+
if %ERRORLEVEL% NEQ 0 (
|
59 |
+
echo 错误: Docker未运行
|
60 |
+
echo 请启动Docker Desktop应用程序
|
61 |
+
pause
|
62 |
+
exit /b 1
|
63 |
+
)
|
64 |
+
|
65 |
+
REM 检查docker-compose.yml文件是否存在
|
66 |
+
if not exist "%COMPOSE_FILE%" (
|
67 |
+
echo 错误: 未找到%COMPOSE_FILE%文件
|
68 |
+
echo 请确保在正确的目录中运行此脚本
|
69 |
+
pause
|
70 |
+
exit /b 1
|
71 |
+
)
|
72 |
+
|
73 |
+
REM 检查Docker Compose命令
|
74 |
+
where docker-compose >nul 2>nul
|
75 |
+
if %ERRORLEVEL% EQU 0 (
|
76 |
+
set COMPOSE_CMD=docker-compose
|
77 |
+
) else (
|
78 |
+
echo 尝试使用新的docker compose命令...
|
79 |
+
docker compose version >nul 2>nul
|
80 |
+
if %ERRORLEVEL% EQU 0 (
|
81 |
+
set COMPOSE_CMD=docker compose
|
82 |
+
) else (
|
83 |
+
echo 错误: 未找到Docker Compose命令
|
84 |
+
echo 请确保Docker Desktop已正确安装
|
85 |
+
pause
|
86 |
+
exit /b 1
|
87 |
+
)
|
88 |
+
)
|
89 |
+
|
90 |
REM 设置Docker BuildKit环境变量
|
91 |
set DOCKER_BUILDKIT=1
|
92 |
set COMPOSE_DOCKER_CLI_BUILD=1
|
93 |
|
94 |
echo 启用Docker BuildKit加速构建...
|
95 |
|
96 |
+
REM 清理缓存(如果指定)
|
97 |
+
if %CLEAN_CACHE% EQU 1 (
|
98 |
+
echo 清理缓存目录...
|
99 |
+
if exist "%CACHE_DIR%" rmdir /s /q "%CACHE_DIR%"
|
100 |
+
)
|
101 |
+
|
102 |
REM 创建缓存目录
|
103 |
+
if not exist "%CACHE_DIR%" (
|
104 |
+
echo 创建缓存目录...
|
105 |
+
mkdir "%CACHE_DIR%"
|
106 |
+
)
|
107 |
+
|
108 |
+
REM 添加构建时间标记
|
109 |
+
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
|
110 |
+
set "YEAR=%dt:~0,4%"
|
111 |
+
set "MONTH=%dt:~4,2%"
|
112 |
+
set "DAY=%dt:~6,2%"
|
113 |
+
set "HOUR=%dt:~8,2%"
|
114 |
+
set "MINUTE=%dt:~10,2%"
|
115 |
+
set "BUILD_TIME=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%"
|
116 |
+
set "BUILD_ARGS=%BUILD_ARGS% --build-arg BUILD_TIME=%BUILD_TIME%"
|
117 |
|
118 |
REM 构建Docker镜像
|
119 |
+
echo 开始构建Docker镜像...
|
120 |
+
|
121 |
+
if "%SERVICE%"=="" (
|
122 |
+
if %REBUILD% EQU 1 (
|
123 |
+
echo 强制重新构建所有服务...
|
124 |
+
%COMPOSE_CMD% build --no-cache %BUILD_ARGS%
|
125 |
+
) else (
|
126 |
+
%COMPOSE_CMD% build %BUILD_ARGS%
|
127 |
+
)
|
128 |
+
) else (
|
129 |
+
if %REBUILD% EQU 1 (
|
130 |
+
echo 强制重新构建服务 %SERVICE%...
|
131 |
+
%COMPOSE_CMD% build --no-cache %BUILD_ARGS% %SERVICE%
|
132 |
+
) else (
|
133 |
+
echo 构建服务 %SERVICE%...
|
134 |
+
%COMPOSE_CMD% build %BUILD_ARGS% %SERVICE%
|
135 |
+
)
|
136 |
+
)
|
137 |
|
138 |
if %ERRORLEVEL% EQU 0 (
|
139 |
echo Docker镜像构建成功!
|
140 |
+
echo 构建时间: %BUILD_TIME%
|
141 |
echo 可以使用以下命令启动容器:
|
142 |
+
echo %COMPOSE_CMD% up -d
|
143 |
) else (
|
144 |
echo Docker镜像构建失败,请检查错误信息。
|
145 |
)
|