sanpang commited on
Commit
97ad7c6
·
1 Parent(s): 92a1202

optimization bat

Browse files
Files changed (1) hide show
  1. .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 ".docker-cache\pip" mkdir .docker-cache\pip
 
 
 
 
 
 
 
 
 
 
 
 
 
12
 
13
  REM 构建Docker镜像
14
- docker-compose build --build-arg BUILDKIT_INLINE_CACHE=1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
 
16
  if %ERRORLEVEL% EQU 0 (
17
  echo Docker镜像构建成功!
 
18
  echo 可以使用以下命令启动容器:
19
- echo docker-compose up -d
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
  )