FROM --platform=$BUILDPLATFORM m.daocloud.io/docker.io/library/golang:1.23.1 AS builder WORKDIR /src ARG TARGETARCH # 设置 Go 模块代理为清华源,避免国外网络超时 ENV GO111MODULE=on \ GOPROXY=https://goproxy.cn,direct # 替换 APT 源为清华,并清理默认源配置 RUN set -eux; \ release=$(grep -oP '(?<=VERSION_CODENAME=).*' /etc/os-release); \ echo "Using Debian release: $release"; \ echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian $release main contrib non-free\n\ deb http://mirrors.tuna.tsinghua.edu.cn/debian $release-updates main contrib non-free\n\ deb http://mirrors.tuna.tsinghua.edu.cn/debian-security $release-security main contrib non-free" \ > /etc/apt/sources.list && \ rm -rf /etc/apt/sources.list.d/* && \ apt-get update && \ apt-get install -y --no-install-recommends protobuf-compiler && \ apt-get clean && rm -rf /var/lib/apt/lists/* COPY . . RUN make build TARGET_ARCH=${TARGETARCH} # 运行阶段镜像 FROM --platform=$TARGETPLATFORM m.daocloud.io/docker.io/library/debian:stable-slim # 如果运行时不需要 APT,这一段可以删除(否则保留) RUN set -eux; \ release=$(grep -oP '(?<=VERSION_CODENAME=).*' /etc/os-release); \ echo "Using Debian release: $release"; \ echo "deb http://mirrors.tuna.tsinghua.edu.cn/debian $release main contrib non-free\n\ deb http://mirrors.tuna.tsinghua.edu.cn/debian $release-updates main contrib non-free\n\ deb http://mirrors.tuna.tsinghua.edu.cn/debian-security $release-security main contrib non-free" \ > /etc/apt/sources.list && \ rm -rf /etc/apt/sources.list.d/* && \ apt-get update && \ apt-get clean && rm -rf /var/lib/apt/lists/* COPY --from=builder /src/build/ /apps/ COPY --from=builder /src /src