richardTowers/devcontainers

★ 0Forks 0ShellGitHub ↗Compare

README

Dev Container Features

Personal dev container features for richardTowers.

Supported base images: these features target Debian-based containers only (Debian, Ubuntu, and the mcr.microsoft.com/devcontainers/base images). Install scripts assume apt-get is available and do not support apk/dnf/yum.

Features

OpenAI Codex CLI

Installs the Codex CLI using the official standalone installer. Codex login and configuration are stored in a named Docker volume shared by devcontainers that use this feature on the same machine.

Usage

{
    "features": {
        "ghcr.io/richardTowers/devcontainers/codex:1": {}
    }
}

Options

Option Default Description
version "latest" Codex CLI release to install, such as "0.1.0"

Claude Code CLI

Installs the Claude Code CLI using the native installer — no Node.js dependency required.

~/.claude is mounted from a Docker volume named claude-code-devcontainer-feature, shared across all devcontainers on the same machine that use this feature. This means you only need to log in once, and config/session state persists across container rebuilds. Note that this state is shared between projects, not isolated per-project.

Usage

Add to your devcontainer.json:

{
    "features": {
        "ghcr.io/richardTowers/devcontainers/claude-code:1": {}
    }
}

Options

Option Default Description
version "latest" Version to install: "latest", "stable", or a semver like "1.0.58"

Example with pinned version

{
    "features": {
        "ghcr.io/richardTowers/devcontainers/claude-code:1": {
            "version": "stable"
        }
    }
}

Shell essentials

A grab-bag of tools that should always be in a shell, so a fresh container never leaves you reaching for something obvious. Currently installs:

  • GitHub CLI (gh), from GitHub's official apt repository
  • mise (mise-en-place), the polyglot runtime / tool version manager, system-wide with activation added to /etc/bash.bashrc
  • jq, vim-nox, and a handful of other common utilities (less, unzip, curl)
  • postgresql-client, including the psql command-line client

It's intended to grow — add whatever you notice is missing to the package list in src/shell-essentials/install.sh.

Usage

{
    "features": {
        "ghcr.io/richardTowers/devcontainers/shell-essentials:1": {}
    }
}

Adding new features

  1. Create a new directory under src/ with a devcontainer-feature.json and install.sh.
  2. Add tests under test/<feature-name>/test.sh.
  3. Update the test matrix in .github/workflows/test.yaml.
  4. Run the release workflow to publish to GHCR.

See the dev container feature spec for details.

Contributors

richardTowers

Issues