| | FROM oven/bun:latest AS web_builder
|
| |
|
| | WORKDIR /build
|
| | COPY . .
|
| |
|
| |
|
| |
|
| | RUN test -f VERSION || echo "dev" > VERSION && \
|
| | if [ -f web/package.json ]; then \
|
| | cd web && \
|
| | bun install && \
|
| | DISABLE_ESLINT_PLUGIN='true' VITE_REACT_APP_VERSION=$(cat /build/VERSION) bun run build ; \
|
| | else \
|
| | mkdir -p web/dist && \
|
| | printf '%s\n' \
|
| | '<!doctype html>' \
|
| | '<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">' \
|
| | '<title>New-API</title></head><body><h3>New-API backend is running.</h3>' \
|
| | '<p>Frontend sources (web/) not found in build context.</p></body></html>' \
|
| | > web/dist/index.html ; \
|
| | fi
|
| |
|
| | FROM golang:alpine AS builder2
|
| | ENV GO111MODULE=on CGO_ENABLED=0
|
| |
|
| | ARG TARGETOS
|
| | ARG TARGETARCH
|
| | ENV GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH:-amd64}
|
| | ENV GOEXPERIMENT=greenteagc
|
| |
|
| | WORKDIR /build
|
| |
|
| | ADD go.mod go.sum ./
|
| | RUN go mod download
|
| |
|
| | COPY . .
|
| | COPY --from=web_builder /build/web/dist ./web/dist
|
| | RUN go build -ldflags "-s -w -X 'github.com/QuantumNous/new-api/common.Version=$(cat VERSION)'" -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
|
| |
|
| |
|
| | ENV PORT=7860
|
| |
|
| | COPY --from=builder2 /build/new-api /
|
| | EXPOSE 7860
|
| | WORKDIR /data
|
| | ENTRYPOINT ["/new-api"]
|
| |
|