# 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
# 构建工具选型
- Java (opens new window)
- Python (opens new window)
- Go (opens new window)
- .Net6 (opens new window)
- .Net8 (opens new window)
- .Net9 (opens new window)
- [NodeJs]
- Android原生
- Flutter(比较复杂,可参考其他语言,自行研究)
# 批量上传镜像
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
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