Some checks failed
CI / Scraper / Lint (push) Failing after 6s
CI / Scraper / Lint (pull_request) Failing after 6s
CI / Scraper / Test (push) Successful in 16s
CI / Scraper / Test (pull_request) Successful in 9s
CI / Scraper / Docker Push (push) Has been skipped
CI / Scraper / Docker Push (pull_request) Has been skipped
CI / UI / Build (push) Successful in 28s
CI / UI / Build (pull_request) Successful in 22s
CI / UI / Docker Push (pull_request) Has been skipped
CI / UI / Docker Push (push) Successful in 36s
iOS CI / Build (pull_request) Successful in 1m41s
iOS CI / Test (pull_request) Successful in 4m7s
- Go scraper: Version/Commit vars in main.go, injected via -ldflags; Server struct + New() updated; GET /health and new GET /api/version expose them - UI Dockerfile: ARG BUILD_VERSION/BUILD_COMMIT → ENV PUBLIC_BUILD_VERSION/PUBLIC_BUILD_COMMIT for SvelteKit - Footer: shows version+short commit when not 'dev' (text-zinc-800, subtle) - docker-compose: args blocks for scraper and ui build sections pass $GIT_TAG/$GIT_COMMIT
50 lines
1.7 KiB
Docker
50 lines
1.7 KiB
Docker
# ── Build stage ────────────────────────────────────────────────────────────────
|
|
FROM golang:1.25-alpine AS builder
|
|
|
|
WORKDIR /build
|
|
|
|
# Cache dependency downloads separately from source compilation.
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
|
|
# Build-time version info — injected by docker-compose or CI via --build-arg.
|
|
ARG VERSION=dev
|
|
ARG COMMIT=unknown
|
|
|
|
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
|
|
go build \
|
|
-ldflags="-s -w -X main.Version=${VERSION} -X main.Commit=${COMMIT}" \
|
|
-o /scraper ./cmd/scraper
|
|
|
|
# ── Runtime stage ──────────────────────────────────────────────────────────────
|
|
FROM alpine:3.21
|
|
|
|
# ca-certificates: HTTPS to novelfire.net
|
|
# tzdata: timezone data
|
|
RUN apk add --no-cache ca-certificates tzdata
|
|
|
|
WORKDIR /app
|
|
|
|
COPY --from=builder /scraper /app/scraper
|
|
|
|
# Create the default static output directory.
|
|
RUN mkdir -p /app/static/books
|
|
|
|
# Non-root user.
|
|
RUN addgroup -S scraper && adduser -S scraper -G scraper
|
|
RUN chown -R scraper:scraper /app
|
|
USER scraper
|
|
|
|
# ── Configuration ─────────────────────────────────────────────────────────────
|
|
ENV SCRAPER_WORKERS=0
|
|
ENV SCRAPER_STATIC_ROOT=/app/static/books
|
|
ENV SCRAPER_HTTP_ADDR=:8080
|
|
|
|
EXPOSE 8080
|
|
|
|
# Default: run as an HTTP server. Override CMD to use "run" for one-shot.
|
|
ENTRYPOINT ["/app/scraper"]
|
|
CMD ["serve"]
|