Dockerfile
Rama main · réplica de lectura del repositorio original.
# 入口 / 节点。Linux 宿主机请用 network_mode: host。
# 基础镜像按 digest 钉死,避免浮动 tag 把未打补丁的工具链打进发布物。
# 更新时同时改 digest 与下面的版本注释。
#
# node 22-bookworm @ 2026-08-25
# golang 1.25.14-bookworm @ 2026-08-19(覆盖审计所列 stdlib CVE 修复线 1.25.13)
# debian bookworm-slim @ 2026-08-25
FROM --platform=$BUILDPLATFORM node:22-bookworm@sha256:8a34c4ab3ea2c5cd194f07e317b2a8f09461d3c8b05c4e34c8ccd56d56024c4d AS ui
WORKDIR /src
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build:embed-ui
FROM --platform=$BUILDPLATFORM golang:1.25.14-bookworm@sha256:3b4a11519ad929d1e1d261a12cff056f0c85b735253d7d861346b9c6f8b36437 AS build
WORKDIR /src
ARG TARGETOS
ARG TARGETARCH
COPY go.mod go.sum ./
RUN go mod download
COPY cmd ./cmd
COPY internal ./internal
COPY --from=ui /src/internal/control/ui ./internal/control/ui
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
go build -trimpath -ldflags="-s -w" -o /out/umbrad ./cmd/umbrad \
&& CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
go build -trimpath -ldflags="-s -w" -o /out/umbra-node ./cmd/umbra-node \
&& CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
go build -trimpath -ldflags="-s -w" -o /out/umbra-visit ./cmd/umbra-visit
FROM debian:bookworm-slim@sha256:88200866dfff7ea7f5cbcb6ec7c8a701889efe6fe859fe64d6990e4b07ea4171 AS umbrad
COPY --from=build /out/umbrad /usr/local/bin/umbrad
COPY --from=build /out/umbra-visit /usr/local/bin/umbra-visit
ENTRYPOINT ["/usr/local/bin/umbrad"]
FROM debian:bookworm-slim@sha256:88200866dfff7ea7f5cbcb6ec7c8a701889efe6fe859fe64d6990e4b07ea4171 AS umbra-node
COPY --from=build /out/umbra-node /usr/local/bin/umbra-node
ENTRYPOINT ["/usr/local/bin/umbra-node"]