|
|
|
|
|
FROM alpine:3.20 AS src |
|
|
RUN apk add --no-cache git |
|
|
ARG REPO_URL=https://github.com/tbphp/gpt-load.git |
|
|
|
|
|
ARG REPO_REF=main |
|
|
WORKDIR /src |
|
|
RUN git clone --depth=1 --branch "${REPO_REF}" "${REPO_URL}" . |
|
|
|
|
|
|
|
|
FROM node:20-alpine3.20 AS web-builder |
|
|
ARG VERSION=1.0.0 |
|
|
WORKDIR /build/web |
|
|
|
|
|
|
|
|
COPY --from=src /src/web/package*.json ./ |
|
|
RUN npm ci |
|
|
COPY --from=src /src/web ./ |
|
|
|
|
|
ENV VITE_VERSION=$VERSION |
|
|
RUN npm run build |
|
|
|
|
|
|
|
|
FROM golang:1.23-alpine3.20 AS go-builder |
|
|
ARG VERSION=1.0.0 |
|
|
ENV GO111MODULE=on \ |
|
|
CGO_ENABLED=0 \ |
|
|
GOOS=linux \ |
|
|
GOTOOLCHAIN=auto |
|
|
WORKDIR /build |
|
|
|
|
|
|
|
|
COPY --from=src /src/go.mod ./ |
|
|
COPY --from=src /src/go.sum ./ |
|
|
RUN go mod download |
|
|
|
|
|
|
|
|
COPY --from=src /src ./ |
|
|
|
|
|
COPY --from=web-builder /build/web/dist ./web/dist |
|
|
|
|
|
|
|
|
RUN go build -trimpath -ldflags "-s -w -X gpt-load/internal/version.Version=${VERSION}" -o gpt-load |
|
|
|
|
|
|
|
|
FROM alpine:3.20 |
|
|
|
|
|
WORKDIR /app |
|
|
|
|
|
RUN apk add --no-cache ca-certificates tzdata && update-ca-certificates |
|
|
|
|
|
COPY --from=go-builder /build/gpt-load /app/gpt-load |
|
|
COPY ./run.sh /app/run.sh |
|
|
RUN chmod +x /app/run.sh |
|
|
|
|
|
|
|
|
RUN mkdir -p /app/data \ |
|
|
&& chgrp -R 0 /app \ |
|
|
&& chmod -R g+rwX /app |
|
|
|
|
|
ENV DATABASE_DRIVER=sqlite |
|
|
ENV DATABASE_DSN=/app/data/gpt-load.db |
|
|
ENV PORT=7860 |
|
|
EXPOSE 7860 |
|
|
|
|
|
ENTRYPOINT ["/app/run.sh"] |