You've already forked DataMate
feat(build): 添加传统 Docker 构建方式和诊断功能
- 在 build-offline.sh 脚本中添加 --pull=false 参数并改进错误处理 - 为 Makefile.offline.mk 中的各个服务构建任务添加 --pull=false 参数 - 新增 build-offline-classic.sh 脚本,提供不使用 BuildKit 的传统构建方式 - 新增 build-offline-v2.sh 脚本,提供增强版 BuildKit 离线构建功能 - 新增 diagnose.sh 脚本,用于诊断离线构建环境状态 - 在 Makefile 中添加 offline-build-classic 和 offline-diagnose
This commit is contained in:
@@ -161,12 +161,7 @@ _offline-build-services: ensure-buildx
|
||||
@echo "构建 datamate-database..."
|
||||
@docker buildx build \
|
||||
--cache-from type=local,src=$(CACHE_DIR)/buildkit/database-cache \
|
||||
--network=none \
|
||||
-f scripts/images/database/Dockerfile \
|
||||
-t datamate-database:$(OFFLINE_VERSION) \
|
||||
--load . 2>/dev/null || echo " Warning: database build may need network, retrying without --network=none..."
|
||||
@docker buildx build \
|
||||
--cache-from type=local,src=$(CACHE_DIR)/buildkit/database-cache \
|
||||
--pull=false \
|
||||
-f scripts/images/database/Dockerfile \
|
||||
-t datamate-database:$(OFFLINE_VERSION) \
|
||||
--load . || echo " Failed"
|
||||
@@ -175,6 +170,7 @@ _offline-build-services: ensure-buildx
|
||||
@echo "构建 datamate-gateway..."
|
||||
@docker buildx build \
|
||||
--cache-from type=local,src=$(CACHE_DIR)/buildkit/gateway-cache \
|
||||
--pull=false \
|
||||
-f scripts/images/gateway/Dockerfile \
|
||||
-t datamate-gateway:$(OFFLINE_VERSION) \
|
||||
--load . || echo " Failed"
|
||||
@@ -183,6 +179,7 @@ _offline-build-services: ensure-buildx
|
||||
@echo "构建 datamate-backend..."
|
||||
@docker buildx build \
|
||||
--cache-from type=local,src=$(CACHE_DIR)/buildkit/backend-cache \
|
||||
--pull=false \
|
||||
-f scripts/images/backend/Dockerfile \
|
||||
-t datamate-backend:$(OFFLINE_VERSION) \
|
||||
--load . || echo " Failed"
|
||||
@@ -191,6 +188,7 @@ _offline-build-services: ensure-buildx
|
||||
@echo "构建 datamate-frontend..."
|
||||
@docker buildx build \
|
||||
--cache-from type=local,src=$(CACHE_DIR)/buildkit/frontend-cache \
|
||||
--pull=false \
|
||||
-f scripts/images/frontend/Dockerfile \
|
||||
-t datamate-frontend:$(OFFLINE_VERSION) \
|
||||
--load . || echo " Failed"
|
||||
@@ -199,6 +197,7 @@ _offline-build-services: ensure-buildx
|
||||
@echo "构建 datamate-runtime..."
|
||||
@docker buildx build \
|
||||
--cache-from type=local,src=$(CACHE_DIR)/buildkit/runtime-cache \
|
||||
--pull=false \
|
||||
--build-arg RESOURCES_DIR=$(CACHE_DIR)/resources \
|
||||
-f scripts/images/runtime/Dockerfile \
|
||||
-t datamate-runtime:$(OFFLINE_VERSION) \
|
||||
@@ -208,6 +207,7 @@ _offline-build-services: ensure-buildx
|
||||
@echo "构建 datamate-backend-python..."
|
||||
@docker buildx build \
|
||||
--cache-from type=local,src=$(CACHE_DIR)/buildkit/backend-python-cache \
|
||||
--pull=false \
|
||||
--build-arg RESOURCES_DIR=$(CACHE_DIR)/resources \
|
||||
-f scripts/images/backend-python/Dockerfile \
|
||||
-t datamate-backend-python:$(OFFLINE_VERSION) \
|
||||
@@ -218,7 +218,7 @@ _offline-build-services: ensure-buildx
|
||||
@echo "✓ 离线构建完成"
|
||||
@echo "======================================"
|
||||
|
||||
# 单个服务离线构建
|
||||
# 单个服务离线构建 (BuildKit)
|
||||
.PHONY: %-offline-build
|
||||
%-offline-build: offline-setup ensure-buildx
|
||||
@echo "离线构建 $*..."
|
||||
@@ -229,11 +229,23 @@ _offline-build-services: ensure-buildx
|
||||
@$(eval IMAGE_NAME := $(if $(filter deer-flow%,$*),$*,datamate-$*))
|
||||
@docker buildx build \
|
||||
--cache-from type=local,src=$(CACHE_DIR)/buildkit/$*-cache \
|
||||
--pull=false \
|
||||
$(if $(filter runtime backend-python deer-flow%,$*),--build-arg RESOURCES_DIR=$(CACHE_DIR)/resources,) \
|
||||
-f scripts/images/$*/Dockerfile \
|
||||
-t $(IMAGE_NAME):$(OFFLINE_VERSION) \
|
||||
--load .
|
||||
|
||||
# 传统 Docker 构建(不使用 BuildKit,更稳定)
|
||||
.PHONY: offline-build-classic
|
||||
offline-build-classic: offline-setup
|
||||
@echo "使用传统 docker build 进行离线构建..."
|
||||
@bash scripts/offline/build-offline-classic.sh $(CACHE_DIR) $(OFFLINE_VERSION)
|
||||
|
||||
# 诊断离线环境
|
||||
.PHONY: offline-diagnose
|
||||
offline-diagnose:
|
||||
@bash scripts/offline/diagnose.sh $(CACHE_DIR)
|
||||
|
||||
# ========== 帮助 ==========
|
||||
|
||||
.PHONY: help-offline
|
||||
@@ -241,9 +253,11 @@ help-offline:
|
||||
@echo "离线构建命令:"
|
||||
@echo " make offline-export [CACHE_DIR=./build-cache] - 在有网环境导出构建缓存"
|
||||
@echo " make offline-setup [CACHE_DIR=./build-cache] - 解压并准备离线缓存"
|
||||
@echo " make offline-build [CACHE_DIR=./build-cache] - 在无网环境构建所有服务"
|
||||
@echo " make offline-build [CACHE_DIR=./build-cache] - 在无网环境构建所有服务(BuildKit)"
|
||||
@echo " make offline-build-classic - 使用传统 docker build(更稳定)"
|
||||
@echo " make <service>-offline-build - 离线构建单个服务"
|
||||
@echo " (如: make backend-offline-build)"
|
||||
@echo " make offline-diagnose - 诊断离线构建环境"
|
||||
@echo ""
|
||||
@echo "完整工作流程:"
|
||||
@echo " # 1. 有网环境导出缓存"
|
||||
@@ -252,6 +266,8 @@ help-offline:
|
||||
@echo " # 2. 传输缓存到无网环境"
|
||||
@echo " scp build-cache-*.tar.gz user@offline-server:/path/to/project/"
|
||||
@echo ""
|
||||
@echo " # 3. 无网环境构建"
|
||||
@echo " # 3. 无网环境构建(推荐先用传统方式)"
|
||||
@echo " tar -xzf build-cache-*.tar.gz"
|
||||
@echo " make offline-build"
|
||||
@echo " make offline-diagnose # 检查环境"
|
||||
@echo " make offline-build-classic # 传统构建(推荐)"
|
||||
@echo " # 或 make offline-build # BuildKit 构建"
|
||||
|
||||
Reference in New Issue
Block a user