Commit Graph

12 Commits

Author SHA1 Message Date
jason 711972c88b 🔧 Complete Docker template update runbook 🔧
Build and Push / build (push) Has been cancelled
Finish syncing generated Docker template files against upstream templates:
remove dead template-files ARGs from the Dockerfile, sync bin-script
boilerplate to the current shell/sh template, migrate the non-standard
rootfs/etc dir to rootfs/tmp/etc, fix a gitignore bug that silently dropped
rootfs/tmp/, correct the README license, and document the go-tools
toolchain-stage exception in the runbook.
- AI.md: document that language toolchain build stages (e.g. `FROM golang:alpine AS go-tools`)
are intentionally exempt from the PULL_URL/GEN_DOCKERFILE_APP_DIR org rule
- Dockerfile: remove dead DEFAULT_FILE_DIR/DEFAULT_DATA_DIR/DEFAULT_CONF_DIR/DEFAULT_TEMPLATE_DIR
ARGs and their mkdir usage — the template-files directory no longer exists
- README.md: fix stale license claim (MIT) to match the actual LICENSE.md (WTFPL)
- .gitignore: anchor the tmp/ pattern to /tmp/ so it stops silently swallowing
the required rootfs/tmp/ directory
- rootfs/etc/profile.d/go.sh -> rootfs/tmp/etc/profile.d/go.sh: migrate the
non-standard rootfs/etc dir to the tmp/etc convention (rootfs/root, rootfs/tmp,
rootfs/usr are the only valid rootfs root dirs; 03-files.sh copies tmp/etc/* at build time)
- rootfs/usr/local/bin/copy, rootfs/usr/local/bin/symlink: sync APPNAME
assignment to the current template style and add the missing trap '' EXIT line
- rootfs/usr/local/bin/healthcheck: sync APPNAME assignment and add the
missing trap '' EXIT line

AI.md
Dockerfile
.gitignore
README.md
rootfs/etc/profile.d/go.sh
rootfs/tmp/
rootfs/usr/local/bin/copy
rootfs/usr/local/bin/healthcheck
rootfs/usr/local/bin/symlink
2026-07-10 19:58:22 -04:00
jason 9a787819ec Add go-licenses and cyclonedx-gomod to image
Build and Push / build (push) Has been cancelled
Install go-licenses (dependency license scanner) and cyclonedx-gomod
(CycloneDX SBOM generator) via the go-tools build stage alongside the
other compiled tools.
- Dockerfile: add go install for go-licenses and cyclonedx-gomod in the go-tools stage
- README.md: add License & SBOM section to the included tools table

Dockerfile
README.md
2026-07-03 12:37:23 -04:00
jason bc1eb17c2f Add govulncheck to default go-workflow
Build and Push / build (push) Has been cancelled
Scan Go dependencies against the vulnerability database automatically
on every run, between vet and test. Fail fast on known CVEs before
spending time running the full test suite.
- rootfs/usr/local/bin/go-workflow: add govulncheck ./... as step 4; renumber build to step 6
- README.md: update default workflow diagram to include govulncheck

README.md
rootfs/usr/local/bin/go-workflow
2026-07-03 11:14:46 -04:00
jason 3ba7473c95 📝 Update LICENSE section to link LICENSE.md 📝
Build and Push / build (push) Has been cancelled
Add LICENSE.md link to README.md License section per global rules.
- README.md: Add link to LICENSE.md in License section

README.md
2026-06-29 01:01:53 -04:00
jason db16b0807b ♻️ Make GO_MODE canonical; MODE becomes alias ♻️
GO_MODE fits the GO_* naming convention. MODE is kept as a convenience alias.
Resolution order: GO_MODE → MODE → GO_PROD=1 (legacy).
- rootfs/usr/local/bin/go-workflow: resolve _RESOLVED_MODE from GO_MODE with
MODE as fallback; warn message now references GO_MODE; logic otherwise unchanged
- README.md: rename MODE row to GO_MODE (canonical); add MODE row as alias;
update production mode section to use GO_MODE=prod

README.md
rootfs/usr/local/bin/go-workflow
2026-06-21 16:46:02 -04:00
jason f910225d3b Add MODE env var and document GOWORKDIR, GOOS, GOARCH
- rootfs/usr/local/bin/go-workflow: replace GO_PROD=1 check with MODE
resolution; MODE=prod|production enables -trimpath -ldflags=-s -w on
go build; MODE=dev|devel|development is the explicit development path;
GO_PROD=1 remains a legacy alias when MODE is unset; unknown MODE values
warn to stderr and default to development; print active mode on every run
- README.md: add GOWORKDIR, GOOS, GOARCH, MODE, GO_PROD to env vars table
- README.md: update production mode section to use MODE=prod; note GO_PROD
as legacy alias

README.md
rootfs/usr/local/bin/go-workflow
2026-06-21 16:44:18 -04:00
jason 2769cf99fb 📝 Update README with new env vars and production build mode 📝
- README.md: add GOBIN, GOFLAGS, GOPROXY, GOTELEMETRY to env vars table
with descriptions and example override commands
- README.md: add GO_PROD=1 production mode section under Docker usage,
explaining -trimpath and -ldflags=-s -w behaviour
- README.md: rename "📦 Pull" section to "📦 Install" per canonical layout
- README.md: add GOPROXY private registry override example

README.md
2026-06-21 09:53:34 -04:00
jason d3fb3ebc31 📝 Fix README inaccuracies 📝
- docker-compose: add `command: tail null` so the container stays alive
instead of running go-workflow and immediately exiting
- Persistence: remove stale symlinks table — those were created by the
old 00-go.sh which has been stripped; symlinks no longer exist
- Cross-compile: wrap bare `go build` examples in `docker run` so they
are valid as written, not ambiguous host-vs-container commands
- Development: fix clone URLs from casjaysdev/go to dockersrc/go

README.md
2026-05-31 21:02:55 -04:00
jason 4a5c802368 Default workflow: no-args runs tidy→fmt→vet→test→build
Replace the service-lifecycle init script with a lean Go-native
default workflow. Running the container with no arguments now
automatically formats, vets, tests, and builds the mounted project.
- rootfs/usr/local/etc/docker/init.d/00-go.sh: stripped from 979
lines of daemon-lifecycle boilerplate to 3 lines that export
CONTAINER_INIT=yes and SERVICE_USES_PID=no, telling the init
framework this is a configuration-only container (no daemon, no
keep-alive loop)
- rootfs/usr/local/bin/go-workflow: new script — runs the canonical
Go workflow in order: go mod tidy → gofmt -w . → go vet ./... →
go test ./... → go build ./...; exits 1 with a clear usage message
if no go.mod is found in /app
- rootfs/usr/local/bin/entrypoint.sh: no-args path in both the init
block and the * case now exec go-workflow instead of __no_exit;
verified: default workflow, explicit commands, sh -c passthrough,
and missing go.mod error all behave correctly
- README.md: document the default workflow prominently; update
one-shot examples; add golangci-lint --timeout note; add tail null
long-running pattern

README.md
rootfs/usr/local/bin/entrypoint.sh
rootfs/usr/local/bin/go-workflow
rootfs/usr/local/etc/docker/init.d/00-go.sh
2026-05-31 13:55:58 -04:00
jason 65346b72af Add buf + goose, fix PATH order, rewrite README
Add buf (modern protobuf toolchain) and goose (Go-native DB migration
runner) to complete the Go dev toolchain. Fix PATH order so baked image
tools in /usr/local/bin always take precedence over anything installed
at runtime into $GOPATH/bin. Full README rewrite following canonical
section order.
- Dockerfile: insert /usr/local/bin between /usr/local/go/bin and
/usr/local/share/go/bin in both build and final stage ENV PATH
- rootfs/etc/profile.d/go.sh: same PATH fix; explicit /usr/local/bin
guard added; $GOPATH/bin appended last
- rootfs/root/docker/setup/05-custom.sh: add buf@latest and
goose/v3@latest installs with descriptive comments
- README.md: full rewrite — H1 title, canonical section order (Pull,
Docker, Tools table, Env vars, PATH order, Persistence, Cross-compile,
Development, License); accurate tool list matching actual image content

Dockerfile
README.md
rootfs/etc/profile.d/go.sh
rootfs/root/docker/setup/05-custom.sh
2026-05-30 23:15:20 -04:00
jason 90c9d73695 🗃️ readme: rename rootfs/ to volumes/ for compose context 🗃️
Aligns README install/run snippets with the new convention split:
rootfs/ for Dockerfile-build content (image filesystem), volumes/
for docker-compose host bind-mounts. Compose mounts, host bind
paths, and runtime data dirs are renamed; Dockerfile COPY/ADD
sources (where present) are preserved.

README.md
2026-05-05 14:36:22 -04:00
jason f1eca4ed7e 🦈🏠🐜 Initial Commit 🐜🦈🏠 2026-05-01 06:43:23 -04:00