mirror of
https://github.com/alibaba/higress.git
synced 2026-02-25 13:10:50 +08:00
39 lines
982 B
Docker
39 lines
982 B
Docker
FROM golang:1.22-bullseye AS golang-base
|
|
|
|
ARG GOPROXY
|
|
ARG GO_FILTER_NAME
|
|
ARG GOARCH
|
|
|
|
ENV GOFLAGS=-buildvcs=false
|
|
ENV GOPROXY=${GOPROXY}
|
|
ENV GOARCH=${GOARCH}
|
|
ENV CGO_ENABLED=1
|
|
|
|
# 根据目标架构安装对应的编译工具
|
|
RUN if [ "$GOARCH" = "arm64" ]; then \
|
|
echo "Installing ARM64 toolchain" && \
|
|
apt-get update && \
|
|
apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu; \
|
|
else \
|
|
echo "Installing AMD64 toolchain" && \
|
|
apt-get update && \
|
|
apt-get install -y gcc binutils; \
|
|
fi
|
|
|
|
WORKDIR /workspace
|
|
|
|
COPY . .
|
|
|
|
WORKDIR /workspace
|
|
|
|
RUN go mod tidy
|
|
RUN if [ "$GOARCH" = "arm64" ]; then \
|
|
CC=aarch64-linux-gnu-gcc AS=aarch64-linux-gnu-as go build -o /$GO_FILTER_NAME.so -buildmode=c-shared .; \
|
|
else \
|
|
go build -o /$GO_FILTER_NAME.so -buildmode=c-shared .; \
|
|
fi
|
|
|
|
FROM scratch AS output
|
|
ARG GO_FILTER_NAME
|
|
ARG GOARCH
|
|
COPY --from=golang-base /${GO_FILTER_NAME}.so golang-filter_${GOARCH}.so |