newtest / Dockerfile.huggingface
xwwww's picture
Upload 888 files
305487b verified
FROM oven/bun:latest AS web_builder
WORKDIR /build
COPY . .
# If the Space repo doesn't include the frontend sources, still create a minimal web/dist
# so Go's go:embed (web/dist) can compile.
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
# Hugging Face Spaces (Docker) expects the app to listen on $PORT (default: 7860).
ENV PORT=7860
COPY --from=builder2 /build/new-api /
EXPOSE 7860
WORKDIR /data
ENTRYPOINT ["/new-api"]