Zum Inhalt springen

Devbox - Reproducible Dev Environments Cheatsheet

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

MethodCommand
Install script`curl -fsSL https://get.jetify.com/devbox
RequirementNix (Devbox kann es für dich installieren)
Verifydevbox version

Getting Started

CommandBeschreibung
devbox initErstelle ein devbox.json im Projekt
devbox add nodejs@20 python@3.12Füge Pakete hinzu (gepinnte Versionen)
devbox rm pythonEntferne ein Paket
devbox installInstalliere alles in devbox.json
devbox shellBetrete die isolierte Umgebung
devbox run <script>Führe ein definiertes Skript in der Umgebung aus

Managing Packages

CommandBeschreibung
devbox add go@1.22Füge eine spezifische Version hinzu
devbox search postgresqlDurchsuche den Nix-Paketkatalog
devbox listAufgelistete installierte Pakete
devbox updateAktualisiere Pakete auf die neueste Erlaubte
devbox info nodejsZeige 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"
    }
  }
}
FieldZweck
packagesGepinnte Tool/Sprach-Versionen
shell.init_hookBefehle beim Betreten der Shell
shell.scriptsBenannte Befehle (devbox run dev)
envUmgebungsvariablen für das Projekt

Shell & Scripts

CommandBeschreibung
devbox shellInteraktive isolierte Shell
devbox run devFühre das dev Skript aus
devbox run -- npm ciFühre einen beliebigen Befehl in der Umgebung aus
exitVerlasse die Devbox Shell

Services (Process Management)

Devbox kann Hintergrund-Services (Datenbanken usw.) für ein Projekt verwalten.

CommandBeschreibung
devbox services lsAufgelistete konfigurierte Services
devbox services upStarte Services
devbox services stopStoppe Services
devbox add postgresql --start-servicesFüge ein Service-gestütztes Paket hinzu

CI & Containers

UseHow
CIInstalliere Devbox, führe devbox run test aus — identische Umgebung zu lokal
Dockerdevbox generate dockerfile produziert ein reproduzierbares Image
Devcontainerdevbox generate devcontainer für VS Code
Direnvdevbox 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

AspectDevboxDev ContainersNix (raw)mise
BackendNixDockerNixOwn Registry
ConfigJSONdevcontainer.jsonNix language.mise.toml
IsolationReal (Nix store)ContainerRealTool Versionen
Learning curveGentleModerateSteepGentle
Best forReproduzierbare Umgebungen, einfachContainer-basierte EntwicklungVolle Nix-KraftVersion Management

Sehe auch Nix für die zugrunde liegende Kraft, devcontainer für Container-basierte Entwicklung und mise für Tool-Version Management.

Resources