Mac M1 Silicon docker编译(解决no matching manifest for linux/arm64/v8)

Silicon版本的idea和docker参考

问题来源

在idea里执行

mvn clean package -DskipTests=true docker:build

报错

[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (default-cli) on project ltfxpos: Exception caught: no matching manifest for linux/arm64/v8 in the manifest list entries -> [Help 1]

从字面意思看,就是mac m1 安装的是arm64架构的docker,编译的时候没有指定平台。

主要参考

docker支持跨平台编译,用命令 buildx,这个是CLI 插件

How to build x86 (and others!) Docker images on an M1 Mac
多平台容器镜像构建就看这一篇
How to Actually Deploy Docker Images Built on M1 Macs With Apple Silicon
How to build x86 (and others!) Docker images on an M1 Mac

流程

打开experimental

在这里插入图片描述

创建builder

# 新建同时切换 builder 
docker buildx create --use --name mybuilder
# 只新建,然后再切换 builder
docker buildx create --name mybuilder
docker buildx use mybuilder

编译

docker buildx build -f src/main/docker/Dockerfile  --platform linux/amd64 --load  -t uhub.service.ucloud.cn/ltfxpos/ltfxpos:lastest .

之前是用maven插件docker编译的,命令是

mvn clean package -DskipTests=true docker:build

在pom里指定了dockerfile路径,编译出来的jar文件路径,所以直接执行 docker:build就行,如果是在命令行里就需要指定对应的文件文件
参数说明:

-f dockerile路径
-platform 平台,可以用命令docker buildx  ls 查看支持的平台
-t 编译的images名字
--load 加载到本机docker里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值