# ======================= # Frontend build (Bun) # ======================= FROM oven/bun:latest AS builder WORKDIR /build COPY web/package.json web/bun.lock ./ RUN bun install COPY web ./web COPY VERSION ./VERSION RUN DISABLE_ESLINT_PLUGIN=true \ VITE_REACT_APP_VERSION=$(cat VERSION) \ bun run build # ======================= # Backend build (Go) # ======================= FROM golang:1.22-alpine AS builder2 ENV CGO_ENABLED=0 GO111MODULE=on WORKDIR /build COPY go.mod go.sum ./ RUN go mod download COPY . . COPY --from=builder /build/dist ./web/dist RUN go build -ldflags="-s -w \ -X github.com/QuantumNous/new-api/common.Version=$(cat VERSION)" \ -o new-api # ======================= # Runtime image # ======================= FROM debian:bookworm-slim RUN apt-get update && \ apt-get install -y --no-install-recommends \ ca-certificates tzdata libasan8 wget && \ rm -rf /var/lib/apt/lists/* && \ update-ca-certificates COPY --from=builder2 /build/new-api /new-api EXPOSE 3000 WORKDIR /data ENTRYPOINT ["/new-api"]