Files
sundynix-agentix/sundynix-dispatcher/Dockerfile
T
Blizzard 2d14245086
deploy-132 / deploy (push) Has been cancelled
fix(docker): 运行镜像 gcr.io/distroless → alpine(内网 runner 连不上 gcr.io)
128 的 runner 能拉 docker.io 但连不上 gcr.io(dial 443 i/o timeout),distroless 拉不到。
三个 Go 服务运行 stage 换 alpine:3.20 + ca-certificates(TLS 连 LLM/MinIO)+ tzdata +
非 root 用户。二进制 CGO_ENABLED=0 全静态,alpine 上直接跑;本地已验证构建+启动正常。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 15:54:35 +08:00

22 lines
977 B
Docker

# 第 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
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 apk add --no-cache ca-certificates tzdata && adduser -D -u 10001 app
USER app
COPY --from=build /out/dispatcher /dispatcher
ENTRYPOINT ["/dispatcher"]