# 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"]
