# Build the Go binary with embedded web UI + demo backend. FROM golang:1.25.0 AS build WORKDIR /src COPY go.mod go.sum vendor ./ COPY cmd ./cmd COPY internal ./internal # Vendored deps => fully offline build. RUN CGO_ENABLED=0 go build -mod=vendor -trimpath -ldflags="-s -w" -o /out/webui4frpc ./cmd/webui4frpc # Static demo backend (tiny HTTP server). COPY deploy/demo-backend ./demo-backend RUN CGO_ENABLED=0 go build -mod=vendor -trimpath -ldflags="-s -w" -o /out/backend ./demo-backend # Runtime image: no frp binaries baked in (mounted via compose volume to keep # layers small and build fast); static Go only. FROM debian:bookworm-slim WORKDIR /app COPY --from=build /out/webui4frpc /app/webui4frpc COPY --from=build /out/backend /app/backend EXPOSE 7500 7000 7400 8080 ENTRYPOINT ["/app/webui4frpc"]