- New sidecar/Dockerfile: multi-stage golang:1.25-alpine → distroless/ static, ~12 MB final image, static CGO-free binary. - Wire pp-sidecar into docker-compose.photoprism.yml so the whole stack (mariadb + photoprism + sidecar) starts with one `podman-compose up`. Container reaches mariadb + photoprism on the internal network; the host gets 127.0.0.1:8000 for Vite's proxy. - New SIDECAR_LISTEN_ADDR env var (default 127.0.0.1 for the host-mode dev loop) so the container can bind 0.0.0.0:8000 and let the port mapping reach it. Without this the loopback bind was invisible to the host. - Delete sidecar/legacy/server.mjs — the Node prototype's archival window is over; git history is its home now. - Update sidecar/README with compose-first bringup; keep the host `go build` flow as the fast-iteration loop. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
29 lines
968 B
Docker
29 lines
968 B
Docker
# syntax=docker/dockerfile:1.6
|
|
#
|
|
# mule-sidecar — Go service for endpoints PhotoPrism does not expose.
|
|
# Multi-stage build: a Go toolchain image compiles a static binary,
|
|
# then we copy it onto a distroless base so the runtime image is ~12 MB
|
|
# with no shell, package manager, or libc.
|
|
|
|
FROM docker.io/library/golang:1.25-alpine AS build
|
|
WORKDIR /src
|
|
|
|
# Cache deps separately from source so a one-line code change doesn't
|
|
# re-download the whole module graph.
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . ./
|
|
# CGO disabled → fully static binary that runs on the distroless base
|
|
# (no libc resolution at startup). -trimpath strips local paths from
|
|
# debug info; -s -w drop the symbol table to keep the binary small.
|
|
RUN CGO_ENABLED=0 GOOS=linux go build \
|
|
-trimpath \
|
|
-ldflags='-s -w' \
|
|
-o /out/mule-sidecar .
|
|
|
|
FROM gcr.io/distroless/static-debian12:latest
|
|
COPY --from=build /out/mule-sidecar /mule-sidecar
|
|
EXPOSE 8000
|
|
ENTRYPOINT ["/mule-sidecar"]
|