Devbox - Reproducible Dev Environments Cheatsheet
Devbox (von Jetify) erstellt isolierte, reproduzierbare Entwicklungsumgebungen ohne Docker oder virtuelle Maschinen. Es wird von Nix angetrieben, verbirgt aber die Nix-Sprache hinter einer einfachen JSON-Konfiguration (devbox.json) und einer vertrauten CLI — du führest devbox add nodejs@20 aus, anstatt eine Nix-Derivation zu schreiben. Das Ergebnis: Jeder im Team (und CI) bekommt exakt die gleiche Toolchain, auf präzise Versionen gepinnt, isoliert vom Host-System.
Installation
Getting Started
| Command | Beschreibung |
|---|
devbox init | Erstelle ein devbox.json im Projekt |
devbox add nodejs@20 python@3.12 | Füge Pakete hinzu (gepinnte Versionen) |
devbox rm python | Entferne ein Paket |
devbox install | Installiere alles in devbox.json |
devbox shell | Betrete die isolierte Umgebung |
devbox run <script> | Führe ein definiertes Skript in der Umgebung aus |
Managing Packages
| Command | Beschreibung |
|---|
devbox add go@1.22 | Füge eine spezifische Version hinzu |
devbox search postgresql | Durchsuche den Nix-Paketkatalog |
devbox list | Aufgelistete installierte Pakete |
devbox update | Aktualisiere Pakete auf die neueste Erlaubte |
devbox info nodejs | Zeige Details für ein Paket |
Versionen lösen sich gegen den Nixpkgs-Katalog auf, also nodejs@20 ist überall reproduzierbar.
The Config (devbox.json)
{
"packages": ["nodejs@20", "python@3.12", "postgresql@16"],
"shell": {
"init_hook": ["echo 'Welcome to the project env'"],
"scripts": {
"dev": "npm run dev",
"test": "npm test",
"db": "pg_ctl start"
}
}
}
| Field | Zweck |
|---|
packages | Gepinnte Tool/Sprach-Versionen |
shell.init_hook | Befehle beim Betreten der Shell |
shell.scripts | Benannte Befehle (devbox run dev) |
env | Umgebungsvariablen für das Projekt |
Shell & Scripts
| Command | Beschreibung |
|---|
devbox shell | Interaktive isolierte Shell |
devbox run dev | Führe das dev Skript aus |
devbox run -- npm ci | Führe einen beliebigen Befehl in der Umgebung aus |
exit | Verlasse die Devbox Shell |
Services (Process Management)
Devbox kann Hintergrund-Services (Datenbanken usw.) für ein Projekt verwalten.
| Command | Beschreibung |
|---|
devbox services ls | Aufgelistete konfigurierte Services |
devbox services up | Starte Services |
devbox services stop | Stoppe Services |
devbox add postgresql --start-services | Füge ein Service-gestütztes Paket hinzu |
CI & Containers
| Use | How |
|---|
| CI | Installiere Devbox, führe devbox run test aus — identische Umgebung zu lokal |
| Docker | devbox generate dockerfile produziert ein reproduzierbares Image |
| Devcontainer | devbox generate devcontainer für VS Code |
| Direnv | devbox generate direnv zum Auto-Enter der Umgebung auf cd |
Common Workflows
# Stand up a reproducible project env from scratch
devbox init
devbox add nodejs@20 postgresql@16
devbox shell # now node + postgres are available, pinned
# Run tasks the same way locally and in CI
devbox run test
# Produce a Docker image from the same definition
devbox generate dockerfile
Devbox vs Alternatives
| Aspect | Devbox | Dev Containers | Nix (raw) | mise |
|---|
| Backend | Nix | Docker | Nix | Own Registry |
| Config | JSON | devcontainer.json | Nix language | .mise.toml |
| Isolation | Real (Nix store) | Container | Real | Tool Versionen |
| Learning curve | Gentle | Moderate | Steep | Gentle |
| Best for | Reproduzierbare Umgebungen, einfach | Container-basierte Entwicklung | Volle Nix-Kraft | Version Management |
Sehe auch Nix für die zugrunde liegende Kraft, devcontainer für Container-basierte Entwicklung und mise für Tool-Version Management.
Resources