DevPod - Environnements de développement open-source en tant que code
DevPod (par Loft) est un outil client-only open-source qui crée des environnements de développement reproductibles à partir d’un standard devcontainer.json sur tout backend — votre Docker local, une machine SSH distante, un cluster Kubernetes ou une VM cloud. Pensez « self-hosted, sans opinion GitHub Codespaces » : cela fonctionne avec tout IDE (VS Code, JetBrains ou navigateur), vous contrôlez où l’environnement s’exécute via des providers enfichables, et il n’y a pas de composant serveur à opérer.
Installation
| Méthode | Comment |
|---|
| CLI | Télécharger depuis GitHub Releases (Linux/macOS/Windows) |
| Application bureau | Interface GUI DevPod Desktop disponible |
| Exigence | Un backend provider (Docker, hôte SSH, K8s, cloud) |
| Vérifier | devpod version |
Providers (Où les environnements s’exécutent)
| Commande | Description |
|---|
devpod provider add docker | Utiliser Docker local |
devpod provider add ssh --option HOST=user@host | Utiliser une machine distante |
devpod provider add kubernetes | Exécuter dans un cluster K8s |
devpod provider add aws (gcloud, azure) | Providers cloud VM |
devpod provider list | Lister les providers configurés |
devpod provider use docker | Définir le provider par défaut |
Créer des espaces de travail
| Commande | Description |
|---|
devpod up . | Démarrer un env depuis le devcontainer du dépôt actuel |
devpod up github.com/org/repo | D’une URL de dépôt Git |
devpod up . --ide vscode | Ouvrir dans un IDE spécifique |
devpod up . --provider kubernetes | Choisir un backend |
devpod up . --recreate | Reconstruire l’espace de travail |
Gestion des espaces de travail
| Commande | Description |
|---|
devpod list | Lister les espaces de travail |
devpod stop <name> | Arrêter un espace de travail |
devpod delete <name> | Supprimer un espace de travail |
devpod ssh <name> | SSH dans un espace de travail |
devpod status <name> | Afficher l’état de l’espace de travail |
devcontainer.json (la spec)
DevPod consomme la spec Dev Container ouverte, donc le même fichier fonctionne dans Codespaces, VS Code et DevPod.
{
"name": "my-project",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/devcontainers/features/node:1": { "version": "20" }
},
"postCreateCommand": "npm install",
"customizations": {
"vscode": { "extensions": ["dbaeumer.vscode-eslint"] }
}
}
| Champ | Objectif |
|---|
image / dockerfile | Environnement de base |
features | Modules d’extension composables (langages, outils) |
postCreateCommand | Setup exécuté après la création |
forwardPorts | Ports à exposer |
customizations | Paramètres/extensions spécifiques à l’IDE |
Intégration IDE
| IDE | Comment |
|---|
| VS Code | --ide vscode (bureau ou navigateur) |
| JetBrains | --ide goland/pycharm/... |
| Navigateur (openvscode) | --ide openvscode |
| SSH/terminal | devpod ssh <name> |
Flux de travail courants
# Local Docker dev env from a repo's devcontainer
devpod provider add docker
devpod up github.com/org/project --ide vscode
# Offload heavy builds to a beefy remote machine
devpod provider add ssh --option HOST=me@build-server
devpod up . --provider ssh
# Ephemeral cloud env in Kubernetes, deleted when done
devpod up . --provider kubernetes
devpod delete my-project
DevPod vs alternatives
| Aspect | DevPod | GitHub Codespaces | Devbox | Gitpod |
|---|
| Hébergement | Tout backend (votre choix) | Cloud GitHub | Local (Nix) | Cloud/auto-hébergé |
| Spec | devcontainer.json | devcontainer.json | devbox.json | Config Gitpod |
| Serveur | Aucun (client-only) | Gérée | Aucun | Serveur |
| Meilleur pour | Dev portable, tout-cloud | Zéro-config GitHub | Envs reproductibles locaux | Espaces de travail git-triggered |
DevPod utilise la même spec devcontainer que Codespaces ; pour les envs locales basées Nix voir Devbox.
Ressources