fix(docker): 运行镜像 gcr.io/distroless → alpine(内网 runner 连不上 gcr.io)
deploy-132 / deploy (push) Has been cancelled
deploy-132 / deploy (push) Has been cancelled
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>
This commit is contained in:
@@ -13,6 +13,9 @@ COPY sundynix-dispatcher/ ./sundynix-dispatcher/
|
|||||||
WORKDIR /src/sundynix-dispatcher
|
WORKDIR /src/sundynix-dispatcher
|
||||||
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/dispatcher ./cmd/dispatcher
|
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/dispatcher ./cmd/dispatcher
|
||||||
|
|
||||||
FROM gcr.io/distroless/static-debian12:nonroot
|
# 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
|
COPY --from=build /out/dispatcher /dispatcher
|
||||||
ENTRYPOINT ["/dispatcher"]
|
ENTRYPOINT ["/dispatcher"]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# 第 2 层 业务网关。多阶段构建:node 构建 admin 控制台 → Go 编译(内嵌 admin)→ distroless 运行。
|
# 第 2 层 业务网关。多阶段构建:node 构建 admin 控制台 → Go 编译(内嵌 admin)→ alpine 运行。
|
||||||
# 一个 gateway 容器同时 serve 控制台 UI + API + 供桌面端直连,无需单独 admin nginx 容器。
|
# 一个 gateway 容器同时 serve 控制台 UI + API + 供桌面端直连,无需单独 admin nginx 容器。
|
||||||
# 构建上下文须为「仓库根」(因 go.mod 用 replace ../sundynix-shared,且需 COPY sundynix-admin/):
|
# 构建上下文须为「仓库根」(因 go.mod 用 replace ../sundynix-shared,且需 COPY sundynix-admin/):
|
||||||
# docker build -f sundynix-gateway/Dockerfile -t sundynix/gateway .
|
# docker build -f sundynix-gateway/Dockerfile -t sundynix/gateway .
|
||||||
@@ -32,7 +32,11 @@ COPY --from=admin /app/dist ./internal/webui/admin_dist
|
|||||||
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway ./cmd/server
|
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/gateway ./cmd/server
|
||||||
|
|
||||||
# ── 2. 运行镜像 ──
|
# ── 2. 运行镜像 ──
|
||||||
FROM gcr.io/distroless/static-debian12:nonroot
|
# 用 alpine 而非 gcr.io/distroless:内网 runner 连不上 gcr.io。二进制是 CGO_ENABLED=0 全静态,
|
||||||
|
# alpine 足够;ca-certificates 供 TLS(LLM/MinIO),tzdata 供时区,非 root 用户跑。
|
||||||
|
FROM alpine:3.20
|
||||||
|
RUN apk add --no-cache ca-certificates tzdata && adduser -D -u 10001 app
|
||||||
|
USER app
|
||||||
COPY --from=build /out/gateway /gateway
|
COPY --from=build /out/gateway /gateway
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
ENTRYPOINT ["/gateway"]
|
ENTRYPOINT ["/gateway"]
|
||||||
|
|||||||
@@ -13,6 +13,9 @@ COPY sundynix-mcp-go/ ./sundynix-mcp-go/
|
|||||||
WORKDIR /src/sundynix-mcp-go
|
WORKDIR /src/sundynix-mcp-go
|
||||||
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/mcp-go ./cmd/server
|
RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o /out/mcp-go ./cmd/server
|
||||||
|
|
||||||
FROM gcr.io/distroless/static-debian12:nonroot
|
# 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/mcp-go /mcp-go
|
COPY --from=build /out/mcp-go /mcp-go
|
||||||
ENTRYPOINT ["/mcp-go"]
|
ENTRYPOINT ["/mcp-go"]
|
||||||
|
|||||||
Reference in New Issue
Block a user