Files
renjue fe8ea784d0
CI / docker (push) Successful in 2m54s
feat: Prism HTTP/SOCKS5 代理网关及管理台
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-23 15:58:28 +08:00

72 lines
1.8 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
#
# 生产镜像由 Gitea Actions 构建,见 README「部署」
# syntax=docker/dockerfile:1
# 基础镜像默认 Docker HubCI 默认 1Panel 加速(docker.1panel.live),本地可传:
# docker build --build-arg IMAGE_PREFIX=docker.1panel.live/library/ -t prism:latest .
ARG IMAGE_PREFIX=
FROM --platform=$BUILDPLATFORM ${IMAGE_PREFIX}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 ${IMAGE_PREFIX}golang:1.25-alpine AS go-builder
ARG TARGETARCH
ARG GOPROXY=https://goproxy.cn,direct
ARG GOSUMDB=sum.golang.google.cn
ENV GOPROXY=${GOPROXY} GOSUMDB=${GOSUMDB}
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 ${IMAGE_PREFIX}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"]