# Prism 代理网关(Go 控制面 + 嵌入 Mihomo + Vue 管理台) # # 构建: # docker build -t prism:latest . # # 运行: # docker run -d --name prism \ # -p 8080:8080 -p 7890:7890 -p 7891:7891 \ # -v prism-data:/app/data \ # prism:latest # # 多架构构建并推送: # ./scripts/docker-build-push-multiarch.sh # syntax=docker/dockerfile:1 # 基础镜像使用 docker.1ms.run 公开镜像加速 FROM --platform=$BUILDPLATFORM docker.1ms.run/library/node:20-alpine AS web-builder WORKDIR /src/web COPY web/package.json web/package-lock.json web/.npmrc ./ RUN npm ci COPY web/ ./ RUN npm run build FROM --platform=$BUILDPLATFORM docker.1ms.run/library/golang:1.25-alpine AS go-builder ARG TARGETARCH WORKDIR /src COPY go.mod go.sum go.env ./ RUN --mount=type=cache,target=/go/pkg/mod \ go mod download COPY cmd/ ./cmd/ COPY internal/ ./internal/ RUN rm -rf internal/api/static/* && mkdir -p internal/api/static COPY --from=web-builder /src/web/dist/ ./internal/api/static/ RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=linux GOARCH="$TARGETARCH" \ go build -ldflags="-w -s" -o /prism ./cmd/prism FROM docker.1ms.run/library/alpine:3.20 RUN apk add --no-cache ca-certificates tzdata \ && addgroup -S prism \ && adduser -S prism -G prism WORKDIR /app COPY --from=go-builder /prism /usr/local/bin/prism RUN mkdir -p /app/data/geo \ && chown -R prism:prism /app USER prism VOLUME ["/app/data"] EXPOSE 8080 7890 7891 ENTRYPOINT ["/usr/local/bin/prism"] CMD ["-data", "/app/data"]