|  |  | 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
 | 
						
						
						
							|  |  | 
 |