DevPod - Cheatsheet Ambienti di Sviluppo Come Codice Open-Source
DevPod (di Loft) è uno strumento client-only, open-source che crea ambienti di sviluppo riproducibili da un devcontainer.json standard su qualsiasi backend — il tuo Docker locale, una macchina SSH remota, un cluster Kubernetes o una VM cloud. Pensa a “GitHub Codespaces auto-hosted e senza opinioni”: funziona con qualsiasi IDE (VS Code, JetBrains o un browser), controlli dove gira l”ambiente tramite provider collegabili e non c”è nessun componente server da gestire.
Installazione
| Metodo | Come |
|---|
| CLI | Scarica da GitHub Releases (Linux/macOS/Windows) |
| Desktop app | DevPod Desktop GUI disponibile |
| Requisito | Un provider backend (Docker, host SSH, K8s, cloud) |
| Verifica | devpod version |
Provider (Dove Gira l”Ambiente)
| Comando | Descrizione |
|---|
devpod provider add docker | Usa Docker locale |
devpod provider add ssh --option HOST=user@host | Usa una macchina remota |
devpod provider add kubernetes | Esegui in un cluster K8s |
devpod provider add aws (gcloud, azure) | Provider VM cloud |
devpod provider list | Elenca i provider configurati |
devpod provider use docker | Imposta il provider predefinito |
Creazione di Workspace
| Comando | Descrizione |
|---|
devpod up . | Avvia un env dal devcontainer del repo corrente |
devpod up github.com/org/repo | Da un URL di repository Git |
devpod up . --ide vscode | Apri in un IDE specifico |
devpod up . --provider kubernetes | Scegli un backend |
devpod up . --recreate | Ricostruisci lo workspace |
Gestione di Workspace
| Comando | Descrizione |
|---|
devpod list | Elenca i workspace |
devpod stop <name> | Arresta uno workspace |
devpod delete <name> | Elimina uno workspace |
devpod ssh <name> | SSH in uno workspace |
devpod status <name> | Mostra lo stato dello workspace |
devcontainer.json (la Spec)
DevPod consuma la specifica Dev Container aperta, quindi lo stesso file funziona in Codespaces, VS Code e 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"] }
}
}
| Campo | Scopo |
|---|
image / dockerfile | Ambiente base |
features | Add-on componibili (linguaggi, strumenti) |
postCreateCommand | Setup eseguito dopo la creazione |
forwardPorts | Porte da esporre |
customizations | Impostazioni/estensioni specifiche dell”IDE |
Integrazione IDE
| IDE | Come |
|---|
| VS Code | --ide vscode (desktop o browser) |
| JetBrains | --ide goland/pycharm/... |
| Browser (openvscode) | --ide openvscode |
| SSH/terminal | devpod ssh <name> |
Flussi di Lavoro Comuni
# Env di sviluppo locale Docker da devcontainer di un repo
devpod provider add docker
devpod up github.com/org/project --ide vscode
# Scarica le build pesanti su una macchina remota robusta
devpod provider add ssh --option HOST=me@build-server
devpod up . --provider ssh
# Env cloud effimero in Kubernetes, eliminato al termine
devpod up . --provider kubernetes
devpod delete my-project
DevPod vs Alternative
| Aspetto | DevPod | GitHub Codespaces | Devbox | Gitpod |
|---|
| Hosting | Qualsiasi backend (tua scelta) | Cloud GitHub | Locale (Nix) | Cloud/self-host |
| Spec | devcontainer.json | devcontainer.json | devbox.json | Configurazione Gitpod |
| Server | Nessuno (client-only) | Gestito | Nessuno | Server |
| Migliore per | Portatile, any-cloud dev | Zero-config GitHub | Env locale riproducibile | Workspace attivati da git |
DevPod utilizza la stessa specifica devcontainer di Codespaces; per env Nix locali vedi Devbox.
Risorse