Aller au contenu
  1. Posts/

Devbox : des environnements de développement reproductibles

·1176 mots·6 mins·
Sommaire
Blog technique - Cet article fait partie d'une série.
Partie 4: Cet article

Imaginez : un nouveau développeur rejoint votre équipe un lundi matin. Au lieu de passer 2 jours à installer Node.js, Python, PostgreSQL, Redis, configurer les bonnes versions, débugger les conflits de dépendances…

10 minutes plus tard, il lance devbox shell et son environnement est exactement identique au vôtre. Même versions, même configuration, même tout. Il peut commencer à développer immédiatement.

C’est exactement ce que fait Devbox pour vous.

Pourquoi Devbox va révolutionner votre workflow
#

Le cauchemar qu’on connaît tous
#

Sans standardisation d’environnement, c’est :

  • 🤯 “Ça marche sur ma machine” → le cauchemar de tous les projets

  • 2-3 jours perdus à configurer un environnement pour un nouveau dev

  • 💥 Conflits de versions entre projets (Node 16 vs 18, Python 3.9 vs 3.11…)

  • 🔄 Réinstallations infinies à chaque changement de projet

  • 😰 Bugs mystérieux liés aux différences d’environnement

La solution Devbox
#

Devbox crée des environnements isolés et reproductibles basés sur Nix, sans la complexité de Nix. Un fichier, une commande, et tout le monde a le même environnement !

Qu’est-ce que Devbox peut gérer ?
#

Réponse courte : tous les outils de développement ! 🚀

Languages : Node.js, Python, Go, Rust, PHP, Ruby, Java, .NET… Bases de données : PostgreSQL, MySQL, Redis, MongoDB… Outils : Docker, kubectl, terraform, aws-cli, gcloud… Versions spécifiques : Node 18.17.0, Python 3.11.2, Go 1.21.1…

Un exemple concret
#

Pour un projet React + Node.js + PostgreSQL :

// devbox.json
{
  "packages": [
    "nodejs@18.17.0",
    "python@3.11.2",
    "postgresql@15.3",
    "redis@7.0.11"
  ],
  "shell": {
    "init_hook": [
      "npm install",
      "createdb myapp_dev || true",
      "redis-server --daemonize yes"
    ]
  }
}

Résultat : Chaque développeur obtient exactement Node 18.17.0, Python 3.11.2, PostgreSQL 15.3 et Redis 7.0.11, avec la base de données initialisée automatiquement !

Démarrage express : 2 minutes pour l’activer
#

Étape 1 : Installation de Devbox
#

# Installation sur macOS/Linux
curl -fsSL https://get.jetpack.io/devbox | bash

# Ou via package manager
brew install jetpack-io/tap/devbox  # macOS

Étape 2 : Initialiser votre projet
#

cd votre-projet
devbox init

# Ajouter vos outils
devbox add nodejs@18 python@3.11 postgresql@15

Étape 3 : Lancer l’environnement
#

# Activer l'environnement
devbox shell

# Ou lancer une commande spécifique
devbox run npm start

C’est tout ! Votre environnement isolé est prêt.

À quoi ça ressemble en vrai ?
#

L’initialisation d’un projet
#

$ devbox init

$ devbox add nodejs@18 python@3.11 postgresql@15
✓ Added nodejs@18.17.0
✓ Added python@3.11.2
✓ Added postgresql@15.3
✓ Updated devbox.json

$ devbox shell
(devbox)$ node --version
v18.17.0

(devbox)$ python --version
Python 3.11.2

(devbox)$ postgres --version
postgres (PostgreSQL) 15.3

Le fichier devbox.json généré
#

{
  "$schema": "https://raw.githubusercontent.com/jetpack-io/devbox/main/.schema/devbox.schema.json",
  "packages": [
    "nodejs@18.17.0",
    "python@3.11.2",
    "postgresql@15.3"
  ],
  "shell": {
    "init_hook": [
      "echo 'Welcome to devbox!' > /dev/null"
    ],
    "scripts": {
    }
  }
}

Cas d’usage avancés
#

Exemple : Stack complète React + API + Base
#

{
  "packages": [
    "nodejs@18.17.0",
    "python@3.11.2",
    "postgresql@15.3",
    "redis@7.0.11",
    "nginx@1.24.0",
    "git@2.41.0"
  ],
  "shell": {
    "init_hook": [
      "# Frontend setup",
      "cd frontend && npm install",

      "# Backend setup",
      "cd ../backend && pip install -r requirements.txt",

      "# Database setup",
      "initdb -D .devbox/postgres/data || true",
      "pg_ctl -D .devbox/postgres/data -l .devbox/postgres/logfile start || true",
      "createdb myapp_dev || true",

      "# Redis",
      "redis-server --daemonize yes --dir .devbox/redis",

      "echo '🎉 Environment ready!'"
    ],
    "scripts": {
      "dev": [
        "# Start all services in background",
        "cd frontend && npm run dev &",
        "cd backend && python manage.py runserver &",
        "wait"
      ],
      "test": "cd backend && python -m pytest && cd ../frontend && npm test",
      "db:reset": "dropdb myapp_dev && createdb myapp_dev && python backend/manage.py migrate"
    }
  }
}

Services en arrière-plan
#

{
  "packages": ["postgresql@15", "redis@7"],
  "shell": {
    "init_hook": [
      "# Auto-start services",
      "devbox services start postgresql",
      "devbox services start redis"
    ]
  }
}

Workflow d’équipe : adoption en douceur
#

Scénario 1 : Nouveau développeur
#

AVANT Devbox :

📅 Jour 1 : Installation de Node.js (mauvaise version)
🐛 Jour 1 : Erreurs npm, réinstallation Node 18
📚 Jour 2 : Installation PostgreSQL, configuration
💥 Jour 2 : Conflits avec projet personnel (Node 16)
🔧 Jour 3 : Installation de nvm, réorganisation
😰 Jour 3 : "Ça marche toujours pas..."

APRÈS Devbox :

📦 9h00 : git clone du projet
⚡ 9h05 : devbox shell
✅ 9h10 : npm start → ça marche !
☕ 9h15 : Premier café en mode productif

Scénario 2 : Switch entre projets
#

# Projet A (Node 16 + Python 3.9)
$ cd projet-a
$ devbox shell
[devbox] $ node --version && python --version
v16.20.0
Python 3.9.17

# Projet B (Node 18 + Python 3.11)
$ cd ../projet-b
$ devbox shell
[devbox] $ node --version && python --version
v18.17.0
Python 3.11.2

Zéro conflit, zéro configuration !

Intégration CI/CD
#

GitHub Actions
#

name: CI
on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install devbox
        uses: jetpack-io/devbox-install-action@v0.7.0

      - name: Run tests in devbox
        run: |
          devbox run test
          devbox run lint

GitLab CI
#

test:
  image: jetpackio/devbox:latest
  script:
    - devbox run test
    - devbox run build

Encore plus simple : L’image officielle jetpackio/devbox:latest inclut déjà Devbox installé !

Avantage énorme : L’environnement CI est exactement identique à celui de développement !

Comparaison avec les alternatives
#

vs Docker
#

AspectDockerDevbox
Démarragedocker run (lourd)devbox shell (instantané)
Partage fichiersVolumes complexesNatif
IDE IntegrationCompliquéTransparent
RessourcesHaute consommationLégère
Courbe apprentissageMoyenneTrès faible

vs Virtual Machines
#

AspectVMDevbox
PerformanceLenteNative
Ressources2-4 GB RAM~50 MB
Boot time1-2 minutes2-3 secondes
IsolationComplèteJuste les packages

vs Gestionnaires de versions (nvm, pyenv…)
#

Aspectnvm/pyenvDevbox
Multi-languageNonOui
ReproductibilitéApproximativeParfaite
Gestion globaleConflits possiblesIsolation complète
ConfigurationManuelleDéclarative

Réutiliser et partager des configurations
#

Import de configurations existantes
#

Devbox permet d’importer des configurations depuis d’autres projets ou repositories :

# Importer depuis un autre projet local
devbox add --config ./other-project/devbox.json

# Importer depuis un repo GitHub
devbox add --config https://raw.githubusercontent.com/company/devbox-configs/main/react-stack.json

# Créer un nouveau projet basé sur un template
devbox init --config https://github.com/jetpack-io/devbox/examples/development/react/devbox.json

Pourquoi vous devriez l’adopter maintenant
#

ROI immédiat
#

  • Gain de temps : Onboarding 3 jours → 10 minutes

  • 🐛 Moins de bugs : environnements identiques = moins de “ça marche sur ma machine”

  • 🎯 Focus développement : plus de temps perdu en configuration

  • 😌 Sérénité : switch entre projets sans stress

Adoption sans friction
#

  • 🚀 Installation en 1 ligne de commande

  • 📁 Un seul fichier à ajouter au projet (devbox.json)

  • 💡 Courbe d’apprentissage très douce

  • 🔄 Compatible avec vos outils existants

Évolutivité
#

  • 👥 Du développeur solo à l’équipe de 100 personnes

  • 🏢 Des startups aux grandes entreprises

  • 🔧 Projets simples aux architectures complexes

  • 🌍 Local development au déploiement


Le secret : Devbox ne change pas votre façon de développer, il élimine juste les problèmes d’environnement. Vous gardez vos habitudes, vos outils, votre IDE… mais sans les galères !

Prêt à dire adieu aux “ça marche sur ma machine” ? Lancez devbox init dans votre prochain projet et découvrez la magie ! ✨

Ressources pour aller plus loin
#

Blog technique - Cet article fait partie d'une série.
Partie 4: Cet article

Articles connexes