Multi programming language container image built for interactive development environments like:
NOTE: This image is large, around 3.5GB in total. This makes it far too big for most large scale uses. But in small scale it seems to work quite well despite its size.
The Dockerfile is built with several size and speed optimizations:
- BuildKit cache mounts on
/var/cache/apt,/var/lib/apt, and/root/.cache/pipso repeated builds skip re-downloading packages and pip wheels (cached rebuilds with no Dockerfile changes take ~1–2 seconds). - Rust is installed with
--profile minimaland onlyclippy+rustfmtare added back, dropping the ~700MBrust-docscomponent. - Docker is the CLI +
buildx+composeplugins from Docker's official apt repo only — the daemon andcontainerdare intentionally omitted (~600MB savings); typical use is to mount the host's docker socket into the container. - Java uses the highest
openjdk-N-jdk-headlessavailable (no Swing/AWT, ~200MB savings). - .NET installs the SDK only — the SDK already ships with the matching runtime, so the runtime package is redundant.
- Go's bundled
doc/,test/, andapi/directories are stripped after install (~100MB savings).
This image is based on Ubuntu 24.04 LTS (Noble Numbat) — the only version that is
explicitly pinned in the Dockerfile. All other tools are resolved dynamically on
every build (see below).
No tool versions are pinned in the
Dockerfile. Everymake buildresolves and installs the latest available release of each language and tool from upstream, so a freshly built image is always current. TheDockerGitHub Actions workflow also runs on a weekly schedule to republish the image with the newest versions even when nothing has been committed.
How "latest" is determined for each tool:
| Tool | How the latest version is resolved at build time |
|---|---|
| Go | Queries https://go.dev/VERSION?m=text for the current stable |
| nvm | Queries the GitHub releases API for nvm-sh/nvm |
| Node.js | nvm install --lts (current LTS line) |
| Java | Highest openjdk-N-jdk-headless available in the Ubuntu apt repos |
| .NET | Highest dotnet-sdk-X.Y available in the Ubuntu apt repos (SDK only; bundles its own runtime) |
| Python | python3 from the Ubuntu apt repos |
| Ruby | ruby-full from the Ubuntu apt repos |
| Rust | rustup (--profile minimal + clippy + rustfmt) |
| Docker | docker-ce-cli, docker-buildx-plugin, docker-compose-plugin from Docker's official apt repo |
| poetry / pipenv / pipx | Latest from PyPI via pip |
Claude Code (claude) |
Anthropic's official installer at https://claude.ai/install.sh |
Antigravity CLI (agy) |
Google's official installer at https://antigravity.google/cli/install.sh |
Opencode (opencode) |
Official installer at https://opencode.ai/install |
The table below is auto-regenerated by make build and reflects the versions
that were actually resolved during the most recent build of this image.
| Language Ecosystem | Version | Included Tools |
|---|---|---|
| Node | 24.16.0 | nvm, npm |
| Python | 3.12.3 | poetry, pipenv, pipx |
| Java | 25.0.2 | |
| Dotnet | 10.0.107 | |
| GO | 1.26.3 | |
| Ruby | 3.2.3 | rbenv, gem |
| Rust | 1.95.0 | |
| Docker | 29.5.2 |
The image also bundles several agentic AI coding CLIs. Each is installed from its official upstream installer script, so every build pulls the newest release.
| Tool | Invoke as | Installer |
|---|---|---|
| Claude Code | claude |
curl -fsSL https://claude.ai/install.sh | bash |
| Antigravity CLI | agy |
curl -fsSL https://antigravity.google/cli/install.sh | bash |
| Opencode | opencode |
curl -fsSL https://opencode.ai/install | bash |
- You are running in a unix-like environment (Linux, MacOS)
- Docker Desktop
Builds the image. Each invocation pulls the latest available version of every
tool listed above and then refreshes the version table in this README.md to match.
make buildStarts a container form this image and drops you into a shell.
make shellAttempts to build then publish the image to Docker Hub.
make publish