Spaces:
Paused
Paused
| # syntax=docker/dockerfile:1 | |
| FROM node:22-alpine AS web-builder | |
| WORKDIR /app/web | |
| COPY web/package.json web/package-lock.json ./ | |
| RUN npm ci | |
| COPY web/ ./ | |
| RUN npm run build | |
| FROM golang:1.22-alpine AS go-builder | |
| WORKDIR /app | |
| RUN apk add --no-cache build-base | |
| COPY go.mod go.sum ./ | |
| RUN go mod download | |
| COPY cmd/ ./cmd/ | |
| COPY internal/ ./internal/ | |
| COPY --from=web-builder /app/web/dist ./web/dist | |
| COPY web/static.go ./web/static.go | |
| RUN CGO_ENABLED=1 GOOS=linux go build -o /out/cpa-usage-keeper ./cmd/server/main.go | |
| FROM alpine:3.20 | |
| WORKDIR / | |
| RUN apk add --no-cache ca-certificates tzdata su-exec python3 py3-pip \ | |
| && python3 -m pip install --no-cache-dir --break-system-packages huggingface_hub \ | |
| && addgroup -S app \ | |
| && adduser -S -G app app \ | |
| && mkdir -p /data \ | |
| && chown -R app:app /data | |
| COPY --from=go-builder /out/cpa-usage-keeper /app/cpa-usage-keeper | |
| COPY hf_state_snapshot.py /app/hf_state_snapshot.py | |
| COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh | |
| COPY entrypoint.space.sh /usr/local/bin/entrypoint.space.sh | |
| RUN sed -i 's/\r$//' /usr/local/bin/docker-entrypoint.sh \ | |
| && sed -i 's/\r$//' /usr/local/bin/entrypoint.space.sh \ | |
| && chmod +x /usr/local/bin/docker-entrypoint.sh /usr/local/bin/entrypoint.space.sh | |
| VOLUME ["/data"] | |
| EXPOSE 8080 | |
| HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 CMD wget -q --spider "http://127.0.0.1:${APP_PORT:-8080}${APP_BASE_PATH:-}/healthz" || exit 1 | |
| ENTRYPOINT ["/usr/local/bin/entrypoint.space.sh"] | |
| CMD ["/app/cpa-usage-keeper"] | |