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