为了在x86架构的宿主机上构建ARM64镜像,需要确保在Docker Buildx中正确配置了qemu用户模式模拟(user mode emulation)来支持跨架构构建。

一、Dockerfile准备

FROM openjdk:8-jdk-alpine

# 添加字体
RUN apk update && apk add --no-cache --arch arm64 fontconfig ttf-dejavu

# 安装nginx
RUN apk add --no-cache --arch arm64 nginx

# 将nginx 配置文件复制到容器中
COPY nginx.conf /etc/nginx/nginx.conf

VOLUME /root/web-frontkit
COPY web-frontkit /root/web-frontkit

VOLUME /root/server-frontkit
COPY server-frontkit /root/server-frontkit

EXPOSE 30081

ENTRYPOINT cd /root/server-frontkit && sh ./startServer.sh start && nginx  && tail -f /dev/null

简单说明一下,该镜像把前后端分离的java web管理平台打包构建成一个镜像。

二、安装Docker Buildx(如果尚未安装)

docker buildx version # 检查是否已经安装,如果未安装,则继续下一步
docker buildx create --use

三、启用qemu用户模式模拟

确保qemu-user-static已经安装在系统上,命令如下:

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes

四、执行buildx命令构建

docker buildx build --platform linux/arm64 -t web-server:v4.1-arm64 . --load

注意后面的–load 表示加载到本地docker镜像中,不加的话只是保存在缓存上。

五、验证

[root@192-168-253-101 web-server]# 
[root@192-168-253-101 web-server]# docker images
REPOSITORY                                                TAG            IMAGE ID       CREATED         SIZE
web-server                                                v4.1-arm64     20a78a916188   2 hours ago     251MB
[root@192-168-253-101 web-server]# 
[root@192-168-253-101 web-server]# 
[root@192-168-253-101 web-server]# docker inspect web-server:v4.1-arm64 | grep Architecture        
        "Architecture": "arm64",
打赏
支付宝 微信
上一篇 下一篇