diff --git a/Dockerfile b/Dockerfile index c1df48c..5f08a8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,9 @@ -FROM golang:1.21-alpine AS build -ARG TARGETOS=linux -ARG TARGETARCH=amd64 -ARG TARGETVARIANT="" +FROM --platform=$BUILDPLATFORM golang:1.21-alpine AS build +ARG TARGETPLATFORM +ARG BUILDPLATFORM +ARG TARGETOS +ARG TARGETARCH +ARG TARGETVARIANT ENV CGO_ENABLED=0 ARG GOPROXY=https://goproxy.cn,direct ENV GOPROXY=$GOPROXY @@ -10,7 +12,13 @@ RUN apk add --no-cache git COPY server/ ./server/ COPY web/ ./web/ WORKDIR /app/server -RUN go env -w GOPROXY=$GOPROXY && GOOS=$TARGETOS GOARCH=$TARGETARCH GOARM=$(echo $TARGETVARIANT | sed 's/^v//') go build -o /app/bin/marketing-data-server ./cmd/server +# 解析平台并执行交叉编译;arm 平台根据 variant 设置 GOARM +RUN OS=${TARGETOS:-$(echo $TARGETPLATFORM | cut -d/ -f1)} \ + && ARCH=${TARGETARCH:-$(echo $TARGETPLATFORM | cut -d/ -f2)} \ + && VARIANT=${TARGETVARIANT:-$(echo $TARGETPLATFORM | cut -d/ -f3)} \ + && if [ "$ARCH" = "arm" ]; then export GOARM=$(echo "$VARIANT" | sed 's/^v//;s/[^0-9]//g'); else export GOARM=; fi \ + && go env -w GOPROXY=$GOPROXY \ + && GOOS=$OS GOARCH=$ARCH go build -trimpath -ldflags="-s -w" -o /app/bin/marketing-data-server ./cmd/server FROM alpine:3.19 WORKDIR /app diff --git a/tool.tar b/tool.tar new file mode 100644 index 0000000..8287ecf Binary files /dev/null and b/tool.tar differ