arm64机器上 构建 amd64 springboot应用镜像
所属分类 docker
浏览量 7
在 arm64 机器(M 系列 Mac、鲲鹏、AWS Graviton) 上,
指定使用 amd64 的 JDK 基础镜像,构建 amd64 服务器上运行的 SpringBoot 镜像,
arm64 机器上可以通过 Docker 平台模拟 / 跨平台构建,
强制指定 --platform linux/amd64,
让 Docker 拉取 amd64 架构的基础镜像,并打包出 纯 amd64 应用镜像。
这个镜像只能在 amd64 机器上跑,不能在当前 arm64 机器上跑。
docker build --platform linux/amd64 -t my-springboot:amd64 .
Dockerfile
# --platform linux/amd64 拉取 amd64 版本的 JDK
FROM eclipse-temurin:17-jre
COPY target/*.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
加了 --platform linux/amd64:
Docker 会自动拉 amd64 的基础镜像
构建出来的镜像就是 amd64 专用
放到 Intel/AMD 服务器上直接运行
docker inspect my-springboot:amd64 | grep Architecture
"Architecture": "amd64"
不在构建命令加 --platform,直接在 Dockerfile 里写死架构,也能实现
Dockerfile
# 关键:这一行强制指定基础镜像为 amd64
FROM --platform=linux/amd64 eclipse-temurin:17-jre
WORKDIR /app
COPY target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
docker build -t my-springboot:amd64 .
指定 amd64 架构的镜像
FROM eclipse-temurin:17-jre-amd64
绝大多数官方镜像都提供带架构后缀的版本:
amd64 镜像:eclipse-temurin:17-jre-amd64
arm64 镜像:eclipse-temurin:17-jre-arm64v8
直接写死架构版本,Docker 就不会自动选择,只会拉指定的那个架构。
docker pull 指定镜像架构
# 官方推荐 Temurin 8 (amd64)
docker pull --platform linux/amd64 docker.1ms.run/eclipse-temurin:8-jdk
docker pull --platform linux/amd64 docker.1ms.run/eclipse-temurin:8-jre-alpine
# 官方 openjdk8 (amd64)
docker pull --platform linux/amd64 docker.1ms.run/openjdk:8-jre-slim
上一篇
下一篇
麦哲伦环球航行记录
MySQL ANY_VALUE 函数的作用
历史 地理 地缘政治 科技 文明 精选书单
docker.1ms.run 毫秒镜像
docker 多架构镜像拉取