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
⚠️ 注意事项
- 只需构建一次 - 除非需要更新 JDK/Python 版本
- 全团队共享 - 可以推送到共享 Registry
- 定期更新 - 建议每月更新一次(获取安全补丁)
- 磁盘空间 - 两个基础镜像共占用 ~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