Files
2025-11-28 13:49:45 +08:00
..
2025-11-28 13:49:45 +08:00
2025-11-28 13:49:45 +08:00
2025-11-28 13:49:45 +08:00
2025-11-28 13:49:45 +08:00

Docker 基础镜像

这些基础镜像只需构建一次,然后被所有业务镜像复用。

包含的镜像

1. Java Maven Base

镜像: localhost:15000/ljwx/java-maven-base:21-jdk-alpine

包含内容:

  • Eclipse Temurin 21 JDK
  • Maven 3.x
  • 预配置的阿里云 Maven 镜像
  • 常用工具(curl, bash, tzdata)

用途: Boot 后端构建

大小: ~400 MB

2. Python Base

镜像: localhost:15000/ljwx/python-base:3.12-slim

包含内容:

  • Python 3.12
  • 编译工具(gcc, g++, pkg-config)
  • MySQL 客户端
  • 预配置的阿里云 PyPI 镜像

用途: Bigscreen 大屏构建

大小: ~350 MB

🚀 构建基础镜像

# 一键构建所有基础镜像
./build-base-images.sh

# 输出:
# ✅ Java Maven 基础镜像构建完成
# ✅ Python 基础镜像构建完成
# ✅ 所有基础镜像已推送到 localhost:15000

🔍 查看基础镜像

# 查看所有基础镜像
docker images | grep ljwx.*base

# 查看详细信息
docker inspect localhost:15000/ljwx/java-maven-base:21-jdk-alpine

🔄 更新基础镜像

# 定期更新(建议每月一次)
./build-base-images.sh

# 推送到共享 Registry(团队协作)
docker tag localhost:15000/ljwx/java-maven-base:21-jdk-alpine \
           registry.company.com/ljwx/java-maven-base:21-jdk-alpine
docker push registry.company.com/ljwx/java-maven-base:21-jdk-alpine

⚠️ 注意事项

  1. 只需构建一次 - 除非需要更新 JDK/Python 版本
  2. 全团队共享 - 可以推送到共享 Registry
  3. 定期更新 - 建议每月更新一次(获取安全补丁)
  4. 磁盘空间 - 两个基础镜像共占用 ~750 MB

📊 收益分析

不使用基础镜像

每次构建 Boot 后端:

1. apk add maven     → 15-20s
2. 配置 settings.xml → 5-10s
-----------------------------------
总计: 20-30s(每次都要等)

使用基础镜像

每次构建 Boot 后端:

1. FROM java-maven-base  → 即时(已缓存)
-----------------------------------
总计: 0s(完全跳过)

收益: 每次构建节省 20-30 秒

🛠️ 故障排查

问题:基础镜像推送失败

# 检查本地 Registry 是否运行
curl http://localhost:15000/v2/_catalog

# 如果未运行,启动 Registry
cd ~/work/codes/tools/macos/registery
./install-local-registry-macos.sh

问题:镜像拉取失败

# 检查镜像是否存在
docker images | grep java-maven-base

# 重新构建
./build-base-images.sh

📚 相关文档