Getting Started
A ready-to-use development environment that works the same on Windows, Mac, and Linux.
Prerequisites​
All Platforms​
-
Docker - Install Rancher Desktop (free and open source)
- Why not Docker Desktop? Docker Desktop requires a paid subscription for companies. Rancher Desktop is 100% free.
-
VS Code with Dev Containers extension
Windows Users​
Before installing Rancher Desktop, you need WSL (Windows Subsystem for Linux):
# Run in PowerShell as Administrator
wsl --install
Restart your computer after the command completes, then install Rancher Desktop.
Note: This works on Windows 10 (build 19041+) and Windows 11.
Mac/Linux Users​
Just install Rancher Desktop - no additional setup needed.
Installation (3 Steps)​
Step 1: Install in Your Project​
Open a terminal in your project directory and run:
Mac/Linux:
curl -fsSL https://raw.githubusercontent.com/helpers-no/devcontainer-toolbox/main/install.sh | bash
Windows (PowerShell):
irm https://raw.githubusercontent.com/helpers-no/devcontainer-toolbox/main/install.ps1 | iex
If you see "running scripts is disabled on this system":
powershell -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/helpers-no/devcontainer-toolbox/main/install.ps1 | iex"
This creates a .devcontainer/devcontainer.json in your project and pulls the pre-built container image.
Step 2: Open in VS Code and Reopen in Container​
Open the project in VS Code. When prompted "Reopen in Container", click it.
The container starts in seconds since the image was already pulled during install. Run dev-setup inside the container to install development tools.
That's it! You're ready to start developing.
Migrating from an Older Version​
If your project has an older .devcontainer/ folder with many files (Dockerfile, manage/, additions/), you can switch to the new image-based approach:
-
Back up your current config:
mv .devcontainer .devcontainer.old -
Run the installer again from your project directory:
curl -fsSL https://raw.githubusercontent.com/helpers-no/devcontainer-toolbox/main/install.sh | bash -
Your
.devcontainer.extend/and.devcontainer.secrets/are preserved — all tool selections and credentials carry over. -
Delete the old backup when everything works:
rm -rf .devcontainer.old
The new approach uses a pre-built image so your .devcontainer/ folder contains only devcontainer.json instead of 100+ files.
Running Commands From the Host: dct-exec​
Each project's devcontainer gets a random Docker container name, not a fixed one — this is what lets you run multiple projects' devcontainers (or multiple worktrees of the same project) at the same time. That means host-side scripts can't hardcode a container name to docker exec into.
Step 1's installer also installs two small helpers to ~/.local/bin (macOS/Linux only):
dct-find-container— prints the name of the running devcontainer for the current repodct-exec <command> [args]— runs<command>inside it
dct-exec bash # open a shell inside this project's devcontainer
dct-exec npm test # run a command, output prints to your terminal
echo "SELECT 1;" | dct-exec psql mydb # pipe stdin in
Both resolve the container via the devcontainer.local_folder label that VS Code's Dev Containers extension sets automatically on every devcontainer it creates:
docker ps --filter "label=devcontainer.local_folder=$(git rev-parse --show-toplevel)" --format '{{.Names}}'
If you're writing your own host-side script (for this project or another one), use that label lookup directly instead of hardcoding a container name.
dct-exec needs ~/.local/bin on your PATH. If the installer warned you it wasn't, add this to your shell profile: export PATH="$HOME/.local/bin:$PATH"
dct-exec is macOS/Linux only for now — it's a bash script and there's no .ps1 equivalent yet.
What's Next?​
- Install Tools - Add development tools (Python, TypeScript, Go, etc.)
- Customization - Configure your project settings
- Troubleshooting - Common issues and solutions
Run dev-help in the terminal to see all available commands.