Reusable Podman-based development container assets and one host-run SQL Server asset.
- 📦 local-registry: local registry install and systemd bootstrap.
- 🧱 dev-base: base image and local registry bootstrap.
- 🛠️ monolith-dev: polyglot devcontainer image for mixed workspace development.
- 🐹 golang-dev: Go devcontainer image.
- 🟢 javascript-dev: JavaScript devcontainer image.
- 🐍 python-dev: Python devcontainer image.
- 🔷 typescript-dev: TypeScript devcontainer image layered on the JavaScript dev image.
- 🔷 dotnet-dev: .NET devcontainer image.
- 🗄️ sidecars/mssql-dev: host-managed SQL Server container.
- 📨 sidecars/smtp4dev: host-managed smtp4dev container.
- To set up the local registry, run
./local-registry/install.sh. It creates or starts the registry container and enables a lingering systemd user service so it comes back automatically. - To build and publish images, run
./local-registry/build-images.sh --version X.Y.Z.
- Focused images and
monolith-devboth consume these scripts so version pins and install behavior stay aligned. - Keep image-specific policy in the image
Containerfile; keep toolchain installation details in the shared scripts. - Keep shared images generic: install tools and shell capability there, but apply personal dotfiles and prompt config at devcontainer runtime instead of baking host-specific files into image builds.
mssql-dev and smtp4dev are separate from the devcontainer flow. See sidecars/mssql-dev/README.md and sidecars/smtp4dev/README.md.
- The workspace dev container mounts the host Podman socket so image build and container registry tasks can run inside a more isolated tooling environment, with the understanding that this weakens the isolation a devcontainer would normally provide. This is a repo-specific convenience, not a recommended general pattern.
If a devcontainer.json uses localhost:5000/... with updateRemoteUserUID enabled, Dev Containers can rewrite that image name to localhost/localhost:5000/... during the temporary UID-adjustment build. Podman then rejects the rewritten reference.
Use 127.0.0.1:5000/... instead.