Full project rename per m's call. Single atomic commit because the codebase rename is a coupled change — go module path, env vars, DB default, Docker artefact names, and on-disk mDock paths all flip together. - go.mod: module mgit.msbls.de/m/mcables → mgit.msbls.de/m/cablegui - cmd/mcables → cmd/cablegui (git mv) - All Go imports rewritten to the new module path - Env vars: MCABLES_ADDR/MCABLES_DB → CABLEGUI_ADDR/CABLEGUI_DB - DB default path: data/mcables.db → data/cablegui.db - Dockerfile + docker-compose.yml: image, container_name, env vars, bind-mount /home/m/stacks/mcables → /home/m/stacks/cablegui, secrets /home/m/secrets/mcables → /home/m/secrets/cablegui - Makefile: bin target + run/build commands point at cmd/cablegui - .gitignore + .dockerignore: /mcables → /cablegui - README, docs/design.md, CLAUDE.md: prose + paths + image name - web/static/index.html: <title> + brand - web/static/main.js + web/web.go: header comment - internal/exporter: Scene.Source "mcables" → "cablegui" - internal/server/export.go: error-detail secrets path - internal/db/migrations/*.sql: header comments (mCables vN → CableGUI vN) Memory group_id kept as "mcables" to preserve existing memory continuity. Documented as historical in CLAUDE.md. go build ./... clean; go test -race ./... green
37 lines
1.1 KiB
Docker
37 lines
1.1 KiB
Docker
# syntax=docker/dockerfile:1.7
|
|
#
|
|
# CableGUI — single-stage build → distroless runtime image.
|
|
# go.mod requires go 1.25; modernc.org/sqlite is pure Go so CGO_ENABLED=0
|
|
# and a distroless/static runtime is all we need.
|
|
|
|
FROM golang:1.25-alpine AS build
|
|
WORKDIR /src
|
|
|
|
# Cache deps before copying the rest of the source.
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
COPY . .
|
|
|
|
# -trimpath strips local paths from the binary; -s -w drops debug info.
|
|
RUN CGO_ENABLED=0 GOOS=linux go build \
|
|
-trimpath \
|
|
-ldflags="-s -w" \
|
|
-o /out/cablegui \
|
|
./cmd/cablegui
|
|
|
|
FROM gcr.io/distroless/static-debian12:nonroot
|
|
WORKDIR /app
|
|
COPY --from=build /out/cablegui /app/cablegui
|
|
|
|
ENV CABLEGUI_ADDR=0.0.0.0:7777 \
|
|
CABLEGUI_DB=/app/data/cablegui.db
|
|
|
|
EXPOSE 7777
|
|
# Run as UID:GID 1000:1000 to match m on mDock — the bind-mounted
|
|
# /home/m/stacks/cablegui/data is owned by m:m, so the container can write
|
|
# to it without chowning the host dir. distroless/static-debian12 accepts
|
|
# arbitrary numeric UIDs; the Go binary doesn't need a /etc/passwd entry.
|
|
USER 1000:1000
|
|
ENTRYPOINT ["/app/cablegui"]
|