mirror of
https://github.com/tiennm99/miti99bot.git
synced 2026-07-31 08:25:56 +00:00
Advance the crawler submodule to the fix for the production failure "stat usr/share/fonts/...: no such file or directory": the PDF writer was handing fpdf a font path, and fpdf rewrote the absolute path into a working-directory-relative one. Font data is now passed as bytes, with a fallback font compiled into the binary when the host has none. The runtime image therefore no longer installs DejaVuSans, which also removes the font layer from the builder stage. /monkeyd_crawl becomes public. The host allowlist and the single in-flight export were already the controls that bound its cost; they now carry that job alone, so both are load-bearing.
29 lines
1.0 KiB
Docker
29 lines
1.0 KiB
Docker
FROM golang:1.26.5-alpine AS builder
|
|
WORKDIR /src
|
|
|
|
# The monkeyd-crawler submodule is resolved through a `replace` directive, so
|
|
# its go.mod must be present before `go mod download` can read the build list.
|
|
# Only the module files are copied here, keeping this layer cached across
|
|
# ordinary source edits.
|
|
COPY go.mod go.sum ./
|
|
COPY third_party/monkeyd-crawler/go.mod third_party/monkeyd-crawler/go.sum ./third_party/monkeyd-crawler/
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
|
|
# The deploy-notify commit SHA comes from Coolify's SOURCE_COMMIT runtime env,
|
|
# not from a build arg. Keep it out of the build so Docker cache survives across
|
|
# commits. The binary is built plain.
|
|
RUN CGO_ENABLED=0 GOOS=linux go build \
|
|
-ldflags="-s -w" \
|
|
-o /out/server \
|
|
./cmd/server
|
|
|
|
FROM gcr.io/distroless/static:nonroot
|
|
# No fonts are installed here: the monkeyd module's PDF renderer falls back to a
|
|
# font compiled into the binary when the host has none.
|
|
COPY --from=builder /out/server /server
|
|
USER nonroot:nonroot
|
|
EXPOSE 8080
|
|
ENTRYPOINT ["/server"]
|