ZFile Docker 镜像构建过程
ZFile Docker 镜像构建过程
前言
下文提供 ZFile 镜像构建过程,供大家参考。
Dockerfile
1 | FROM ibm-semeru-runtimes:open-8-jre |
FROM ibm-semeru-runtimes:open-8-jre
表示使用的基础镜像,这里选中的这个是ibm
的openj9
jdk8
版本的jre
,这个版本的 jdk 具有内存占用小,启动速度快等优势,且针对docker
环境做过特殊优化。WORKDIR /root
表示工作目录在/root
,下方所有命令将在这个目录下执行RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
和RUN echo 'Asia/Shanghai' >/etc/timezone
表示设置时区为上海时间,这两个设置的区别参考:https://unix.stackexchange.com/questions/384971/whats-the-difference-between-localtime-and-timezone-filesRUN curl -o app.jar https://c.jun6.net/ZFILE/zfile-release.jar
表示下载zfile
最新版jar
包,并命名为app.jar
,因为上方工作目录为/root
,所以实际下载到了/root/app.jar
EXPOSE 8080
表示容器可能会使用这个端口,这个只是声明或备注式的,不会实际影响端口情况。ENTRYPOINT java $JAVA_OPTS -Xshareclasses -Xquickstart -jar /root/app.jar
表示启动/root/app.jar
,其中-Xshareclasses -Xquickstart
是ibm
的openj9 jvm
的参数,用来优化内存占用。
build
由于需要同时支持 arm64
架构和 amd64
架构,所以使用的 docker
的 多平台构建,即同时 build
多个架构的镜像。
- 由于
Docker
默认的builder
实例不支持同时指定多个--platform
,我们必须首先创建一个新的builder
实例。
1 | docker buildx create --name zfile-builder --driver docker-container |
- 使用新创建好的
builder
实例
1 | docker buildx use zfile-builder |
- 查看已有的
builder
支持构建的架构类型
1 | docker buildx ls |
- 安装模拟器(用于模拟其他平台的构建)
1 | docker run --privileged --rm tonistiigi/binfmt --install all |
- 在
Dockerfile
所在目录执行构建命令并push
到docker hub
(需提前docker login
账号)
1 | docker buildx build --platform linux/arm64,linux/amd64 -t zhaojun1998/zfile:latest --push . |
结语
然后在 docker hub
就可以看到推送的镜像了。
[
后续还会更新如何使用 CI
工具自动化构建镜像的方式。
------------- 本 文 结 束     感 谢 您 的 阅 读 -------------