Files
DataMate/scripts/offline/build-base-images.sh
Jerry Yan da5b18e423 feat(scripts): 添加 APT 缓存预装功能解决离线构建问题
- 新增 APT 缓存目录和相关构建脚本 export-cache.sh
- 添加 build-base-images.sh 脚本用于构建预装 APT 包的基础镜像
- 增加 build-offline-final.sh 最终版离线构建脚本
- 更新 Makefile.offline.mk 添加新的离线构建目标
- 扩展 README.md 文档详细说明 APT 缓存问题解决方案
- 为多个服务添加使用预装基础镜像的离线 Dockerfile
- 修改打包脚本包含 APT 缓存到最终压缩包中
2026-02-03 13:16:17 +08:00

88 lines
2.6 KiB
Bash

#!/bin/bash
# 构建带有预装 APT 包的基础镜像
# Usage: ./build-base-images.sh [output-dir]
set -e
OUTPUT_DIR="${1:-./build-cache}"
IMAGES_DIR="$OUTPUT_DIR/images"
mkdir -p "$IMAGES_DIR"
echo "======================================"
echo "构建预装 APT 包的基础镜像"
echo "======================================"
# 构建各个基础镜像
echo ""
echo "1. 构建 datamate-java-base (用于 backend, gateway)..."
docker build \
-t datamate-java-base:latest \
--target datamate-java-base \
-f scripts/offline/Dockerfile.base-images \
. || echo "Warning: datamate-java-base 构建失败"
echo ""
echo "2. 构建 datamate-python-base (用于 backend-python)..."
docker build \
-t datamate-python-base:latest \
--target datamate-python-base \
-f scripts/offline/Dockerfile.base-images \
. || echo "Warning: datamate-python-base 构建失败"
echo ""
echo "3. 构建 datamate-runtime-base (用于 runtime)..."
docker build \
-t datamate-runtime-base:latest \
--target datamate-runtime-base \
-f scripts/offline/Dockerfile.base-images \
. || echo "Warning: datamate-runtime-base 构建失败"
echo ""
echo "4. 构建 deer-flow-backend-base (用于 deer-flow-backend)..."
docker build \
-t deer-flow-backend-base:latest \
--target deer-flow-backend-base \
-f scripts/offline/Dockerfile.base-images \
. || echo "Warning: deer-flow-backend-base 构建失败"
echo ""
echo "5. 构建 mineru-base (用于 mineru)..."
docker build \
-t mineru-base:latest \
--target mineru-base \
-f scripts/offline/Dockerfile.base-images \
. || echo "Warning: mineru-base 构建失败"
echo ""
echo "======================================"
echo "保存基础镜像集合"
echo "======================================"
docker save -o "$IMAGES_DIR/base-images-with-apt.tar" \
maven:3-eclipse-temurin-21 \
maven:3-eclipse-temurin-8 \
eclipse-temurin:21-jdk \
mysql:8 \
node:20-alpine \
nginx:1.29 \
ghcr.nju.edu.cn/astral-sh/uv:python3.11-bookworm \
ghcr.nju.edu.cn/astral-sh/uv:python3.12-bookworm \
ghcr.nju.edu.cn/astral-sh/uv:latest \
python:3.12-slim \
python:3.11-slim \
gcr.io/distroless/nodejs20-debian12 \
datamate-java-base:latest \
datamate-python-base:latest \
datamate-runtime-base:latest \
deer-flow-backend-base:latest \
mineru-base:latest \
2>/dev/null || echo "Warning: 部分镜像保存失败"
echo ""
echo "======================================"
echo "✓ 基础镜像构建完成"
echo "======================================"
echo "镜像列表:"
docker images | grep -E "(datamate-|deer-flow-|mineru-)base" || true