daili-usage-keeper / Dockerfile
pjpjq's picture
Add HF-backed sqlite snapshot restore/upload for usage keeper
98fe916 verified
Raw
History Blame Contribute Delete
1.51 kB
# 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"]