feat(landscape): HTTP API, worker consumer, wiring, docs
Adds the /landscape routes (slots, slot upload, runs, run detail, results), mounts them in the router, wires the landscape repository, job publisher, godal raster IO and Compute into the composition root, and registers the gis-landscape-runner consumer in the worker. Also fixes the Dockerfile so the image actually runs: godal's cgo needs g++, and the runtime base must match the builder's Alpine release or libgdal's soname does not resolve. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
# Build context is the repo root: docker build -f build/package/Dockerfile .
|
||||
FROM golang:1.26-alpine AS builder
|
||||
|
||||
# godal (GDAL bindings) needs cgo, a C toolchain and the GDAL headers.
|
||||
RUN apk add --no-cache gdal-dev gcc musl-dev pkgconfig
|
||||
# godal (GDAL bindings) needs cgo, a C/C++ toolchain and the GDAL headers.
|
||||
# g++ is required: parts of the binding compile as C++ against GDAL's headers.
|
||||
RUN apk add --no-cache gdal-dev gcc g++ musl-dev pkgconfig
|
||||
|
||||
WORKDIR /src
|
||||
|
||||
@@ -12,7 +13,9 @@ RUN go mod download
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=1 GOOS=linux go build -trimpath -o /out/gis ./cmd/gis
|
||||
|
||||
FROM alpine:3.22
|
||||
# Must match the builder's Alpine release (golang:1.26-alpine is Alpine 3.24):
|
||||
# an older base ships a different libgdal soname and the binary will not start.
|
||||
FROM alpine:3.24
|
||||
|
||||
# gdal: shared library for godal (raster math in the worker).
|
||||
# gdal-tools: gdal_translate / gdalinfo (COG conversion) and ogr2ogr.
|
||||
|
||||
Reference in New Issue
Block a user