docker构建多平台镜像
交叉编译环境准备
wget https://github.com/docker/buildx/releases/download/v0.9.1/buildx-v0.9.1.linux-amd64
mv buildx-v0.9.1.linux-amd64 ~/.docker/cli-plugins/docker-buildx
mkdir -p ~/.docker/cli-plugins
chmod +x ~/.docker/cli-plugins/docker-buildx
docker run --privileged --rm tonistiigi/binfmt --install all
docker buildx create --name mybuilder --bootstrap --use --platform linux/amd64,linux/arm64
docker buildx ls
docker 配置文件/etc/docker/daemon.json需要添加如下配置项
{
"experimental": true
}
编译arm64和amd64镜像
hello.go
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Printf("Hello, %s!\n", runtime.GOARCH)
}
Dockerfile
FROM golang:alpine AS builder
WORKDIR /app
ADD . .
RUN go mod init hello && \
go build -o hello .
FROM alpine
WORKDIR /app
COPY --from=builder /app/hello .
CMD ["./hello"]
构建上传
docker buildx build -t xwjh/hello:v1 --platform=linux/arm64,linux/amd64 . --push