# 008基础镜像重构之概览

# 前言

这里为什么是重构呢?是因为早在半年前就定制过好几个语言的构建和运行环境,已经发布到Github上了。

https://github.com/odboy-tianjun/dockerfiles/tree/master/Base (opens new window)

那为什么要重构呢?是为了规范。就拿java来说,使用Oracle JDK可能被罚款,使用过时的Open JDK小版本可能存在安全问题等等,其中java的构建工具maven和gradle也是如此。

在d006节中,我们使用的是官方提供的maven:3.8.6-openjdk-11镜像,其中maven小版本不可控,jdk小版本不可控,系统基础镜像不可控。那么,自定义基础镜像就显得很必要了。

# 适配语言清单

  • Java
  • Python
  • Go
  • .Net
  • NodeJs
  • Flutter
  • Android原生

# 代码编译依赖清单

  • Java
    • jdk
    • maven/gradle
  • Python
    • python sdk
  • Go
    • golang sdk
  • .Net
    • .net build sdk
  • NodeJs
    • node.js sdk
  • Flutter(https://docs.flutter.cn/deployment)
  • Android原生
    • jdk
    • gradle

# 构建工具选型

# 批量上传镜像

echo '你的密码' | docker login --username=tianjun@odboy.cn --password-stdin registry.cn-shanghai.aliyuncs.com
docker images | grep kenaito | grep -v GB | grep -v alpine | grep -v minio | grep -v registry.cn-shanghai.aliyuncs.com | while read line; do
    image_name=$(echo $line | awk '{print $1}')
    image_tag=$(echo $line | awk '{print $2}')
    image_id=$(echo $line | awk '{print $3}')
    target_image="registry.cn-shanghai.aliyuncs.com/odboy/devops:${image_name}-${image_tag}"
    echo "处理: ${image_name}:${image_tag} (${image_id}) 开始"
    docker tag ${image_name}:${image_tag} $target_image
    docker push $target_image
    echo "处理: ${image_name}:${image_tag} (${image_id}) 完成"
    echo "----------------------------------------"
done
1
2
3
4
5
6
7
8
9
10
11
12

# 镜像清单

docker images | grep kenaito | grep -v GB | grep -v alpine | grep -v minio | grep -v registry.cn-shanghai.aliyuncs.com | awk '{print "|"$1":"$2"|"$7"|-|-|"}'
1
最近更新: 2025-09-05
2017 - 武林秘籍   |