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里