# 第 4 层 编排调度。多阶段构建(上下文须为仓库根,因 replace ../sundynix-shared): # docker build -f sundynix-dispatcher/Dockerfile -t sundynix/dispatcher . FROM golang:1.25-alpine AS build WORKDIR /src COPY sundynix-shared/go.mod sundynix-shared/go.sum ./sundynix-shared/ COPY sundynix-dispatcher/go.mod sundynix-dispatcher/go.sum ./sundynix-dispatcher/ WORKDIR /src/sundynix-dispatcher ENV GOWORK=off GOFLAGS=-mod=mod GOPROXY=https://goproxy.cn,direct RUN go mod download WORKDIR /src COPY sundynix-shared/ ./sundynix-shared/ COPY sundynix-dispatcher/ ./sundynix-dispatcher/ WORKDIR /src/sundynix-dispatcher RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/dispatcher ./cmd/dispatcher # alpine 运行(内网 runner 连不上 gcr.io;二进制 CGO_ENABLED=0 全静态,ca-certs 供 TLS)。 FROM alpine:3.20 RUN sed -i 's#dl-cdn.alpinelinux.org#mirrors.aliyun.com#g' /etc/apk/repositories \ && apk add --no-cache ca-certificates tzdata && adduser -D -u 10001 app USER app COPY --from=build /out/dispatcher /dispatcher ENTRYPOINT ["/dispatcher"]