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
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
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
- 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
- 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
- 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
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
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
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