FROM alpine:3.22 AS source RUN apk add --no-cache git RUN git clone --depth 1 --branch v1.0.0-rc.22 https://github.com/QuantumNous/new-api.git /src FROM oven/bun:1 AS web-builder WORKDIR /build/web COPY --from=source /src/web/package.json /src/web/bun.lock ./ RUN bun install --frozen-lockfile COPY --from=source /src/web ./ COPY --from=source /src/VERSION /build/VERSION RUN DISABLE_ESLINT_PLUGIN=true VITE_REACT_APP_VERSION=v1.0.0-rc.22 bun run build FROM golang:1.26.1-alpine AS go-builder ENV GO111MODULE=on CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GOEXPERIMENT=greenteagc WORKDIR /build COPY --from=source /src/go.mod /src/go.sum ./ RUN go mod download COPY --from=source /src ./ COPY --from=web-builder /build/web/dist ./web/dist RUN go test ./relay/channel/openai \ ./relay \ ./relay/channel/gemini \ ./service/relayconvert/internal/oai_chat \ && go build -ldflags "-s -w -X 'github.com/QuantumNous/new-api/common.Version=v1.0.0-rc.22'" -o new-api 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 \ && mkdir -p /data \ && chmod 777 /data COPY --from=go-builder /build/new-api /new-api COPY --from=source /src/LICENSE /src/NOTICE /src/THIRD-PARTY-LICENSES.md /licenses/ ENV PORT=7860 \ VERSION=v1.0.0-rc.22 EXPOSE 7860 WORKDIR /data USER root ENTRYPOINT ["/new-api"]