build(sidecar): containerize + delete the Node prototype
- 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>
This commit is contained in:
28
sidecar/Dockerfile
Normal file
28
sidecar/Dockerfile
Normal file
@@ -0,0 +1,28 @@
|
||||
# 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"]
|
||||
Reference in New Issue
Block a user