You've already forked DataMate
feat(scripts): 添加 APT 缓存预装功能解决离线构建问题
- 新增 APT 缓存目录和相关构建脚本 export-cache.sh - 添加 build-base-images.sh 脚本用于构建预装 APT 包的基础镜像 - 增加 build-offline-final.sh 最终版离线构建脚本 - 更新 Makefile.offline.mk 添加新的离线构建目标 - 扩展 README.md 文档详细说明 APT 缓存问题解决方案 - 为多个服务添加使用预装基础镜像的离线 Dockerfile - 修改打包脚本包含 APT 缓存到最终压缩包中
This commit is contained in:
@@ -8,6 +8,7 @@ OUTPUT_DIR="${1:-./build-cache}"
|
||||
BUILDKIT_CACHE_DIR="$OUTPUT_DIR/buildkit"
|
||||
IMAGES_DIR="$OUTPUT_DIR/images"
|
||||
RESOURCES_DIR="$OUTPUT_DIR/resources"
|
||||
APT_CACHE_DIR="$OUTPUT_DIR/apt-cache"
|
||||
|
||||
# 确保 buildx 构建器存在
|
||||
if ! docker buildx inspect offline-builder > /dev/null 2>&1; then
|
||||
@@ -17,7 +18,7 @@ else
|
||||
docker buildx use offline-builder
|
||||
fi
|
||||
|
||||
mkdir -p "$BUILDKIT_CACHE_DIR" "$IMAGES_DIR" "$RESOURCES_DIR"
|
||||
mkdir -p "$BUILDKIT_CACHE_DIR" "$IMAGES_DIR" "$RESOURCES_DIR" "$APT_CACHE_DIR"
|
||||
|
||||
echo "======================================"
|
||||
echo "1. 导出基础镜像"
|
||||
@@ -117,11 +118,42 @@ fi
|
||||
|
||||
echo ""
|
||||
echo "======================================"
|
||||
echo "4. 打包缓存"
|
||||
echo "4. 导出 APT 缓存"
|
||||
echo "======================================"
|
||||
|
||||
# 为需要 apt 的镜像预生成 apt 缓存
|
||||
echo "生成 APT list 缓存..."
|
||||
|
||||
# eclipse-temurin:21-jdk 的 apt 缓存
|
||||
docker run --rm \
|
||||
-v "$APT_CACHE_DIR/eclipse-temurin:/var/cache/apt/archives" \
|
||||
-v "$APT_CACHE_DIR/eclipse-temurin-lists:/var/lib/apt/lists" \
|
||||
eclipse-temurin:21-jdk \
|
||||
bash -c "apt-get update && apt-get install -y --download-only vim wget curl rsync python3 python3-pip python-is-python3 dos2unix libreoffice fonts-noto-cjk 2>/dev/null || true" 2>/dev/null || echo " Warning: eclipse-temurin apt 缓存导出失败"
|
||||
|
||||
# python:3.12-slim 的 apt 缓存
|
||||
docker run --rm \
|
||||
-v "$APT_CACHE_DIR/python312:/var/cache/apt/archives" \
|
||||
-v "$APT_CACHE_DIR/python312-lists:/var/lib/apt/lists" \
|
||||
python:3.12-slim \
|
||||
bash -c "apt-get update && apt-get install -y --download-only vim openjdk-21-jre nfs-common glusterfs-client rsync 2>/dev/null || true" 2>/dev/null || echo " Warning: python3.12 apt 缓存导出失败"
|
||||
|
||||
# python:3.11-slim 的 apt 缓存
|
||||
docker run --rm \
|
||||
-v "$APT_CACHE_DIR/python311:/var/cache/apt/archives" \
|
||||
-v "$APT_CACHE_DIR/python311-lists:/var/lib/apt/lists" \
|
||||
python:3.11-slim \
|
||||
bash -c "apt-get update && apt-get install -y --download-only curl vim libgl1 libglx0 libopengl0 libglib2.0-0 procps 2>/dev/null || true" 2>/dev/null || echo " Warning: python3.11 apt 缓存导出失败"
|
||||
|
||||
echo "✓ APT 缓存导出完成"
|
||||
|
||||
echo ""
|
||||
echo "======================================"
|
||||
echo "5. 打包缓存"
|
||||
echo "======================================"
|
||||
|
||||
cd "$OUTPUT_DIR"
|
||||
tar -czf "build-cache-$(date +%Y%m%d).tar.gz" buildkit images resources
|
||||
tar -czf "build-cache-$(date +%Y%m%d).tar.gz" buildkit images resources apt-cache
|
||||
cd - > /dev/null
|
||||
|
||||
echo ""
|
||||
@@ -131,4 +163,10 @@ echo "======================================"
|
||||
echo "缓存位置: $OUTPUT_DIR"
|
||||
echo "传输文件: $OUTPUT_DIR/build-cache-$(date +%Y%m%d).tar.gz"
|
||||
echo ""
|
||||
echo "包含内容:"
|
||||
echo " - 基础镜像 (images/)"
|
||||
echo " - BuildKit 缓存 (buildkit/)"
|
||||
echo " - 外部资源 (resources/)"
|
||||
echo " - APT 缓存 (apt-cache/)"
|
||||
echo ""
|
||||
echo "请将此压缩包传输到无网环境后解压使用"
|
||||
|
||||
Reference in New Issue
Block a user