FROM node:22 AS web-builder WORKDIR /web COPY web/package.json web/package-lock.json ./ COPY web/shared/package.json ./shared/package.json COPY web/frpc/package.json ./frpc/package.json COPY web/frps/package.json ./frps/package.json RUN npm ci COPY web/shared/ ./shared/ COPY web/frpc/ ./frpc/ RUN npm run build --workspace frpc FROM golang:1.26 AS building COPY . /building COPY --from=web-builder /web/frpc/dist /building/web/frpc/dist WORKDIR /building RUN env CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -tags frpc -o bin/frpc ./cmd/frpc FROM alpine:3 RUN apk add --no-cache tzdata COPY --from=building /building/bin/frpc /usr/bin/frpc ENTRYPOINT ["/usr/bin/frpc"]