build(Dockerfile): 更新Dockerfile以支持多平台交叉编译
修改Dockerfile以使用BUILDPLATFORM和TARGETPLATFORM参数,支持多平台交叉编译 优化arm平台的GOARM设置逻辑,并添加编译优化参数
This commit is contained in:
parent
dcbc2ab5d2
commit
996f4cb2a0
18
Dockerfile
18
Dockerfile
|
|
@ -1,7 +1,9 @@
|
||||||
FROM golang:1.21-alpine AS build
|
FROM --platform=$BUILDPLATFORM golang:1.21-alpine AS build
|
||||||
ARG TARGETOS=linux
|
ARG TARGETPLATFORM
|
||||||
ARG TARGETARCH=amd64
|
ARG BUILDPLATFORM
|
||||||
ARG TARGETVARIANT=""
|
ARG TARGETOS
|
||||||
|
ARG TARGETARCH
|
||||||
|
ARG TARGETVARIANT
|
||||||
ENV CGO_ENABLED=0
|
ENV CGO_ENABLED=0
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
|
|
@ -10,7 +12,13 @@ RUN apk add --no-cache git
|
||||||
COPY server/ ./server/
|
COPY server/ ./server/
|
||||||
COPY web/ ./web/
|
COPY web/ ./web/
|
||||||
WORKDIR /app/server
|
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
|
FROM alpine:3.19
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue