OpenCode con Docker offre un runtime riproducibile, un limite chiaro dei file o un percorso verso un modello locale. Il container non è sicuro automaticamente: immagine, mount, credenziali, rete, permessi e prove prima della scrittura vanno controllati insieme.
Risposta rapida: scegli il percorso Docker
Docker Sandbox è adatto a un workspace isolato gestito, ma devi conoscere file montati, provider che riceve il codice e permessi del sandbox.
Docker Model Runner offre il servizio del modello e OpenCode resta l'interfaccia. Un endpoint attivo non configura progetto e permessi.
Un'immagine personalizzata fissa Node e pacchetti, ma richiede manutenzione di Dockerfile, utente, aggiornamenti e secret.
Percorsi di configurazione e compromessi
`opencode docker image`, `opencode docker compose` e `docker opencode` sono varianti della stessa scelta, non pagine separate.
Parti dall'immagine minima che esegue CLI e raggiunge il provider; evita servizi extra e mount della home nel primo test.
Se il motivo è la privacy del modello, separa il servizio di inferenza dall'agente. L'endpoint non sostituisce la revisione del mount.
| Percorso | Adatto a | Limite da verificare |
|---|---|---|
| Docker Sandbox | Workspace isolato rapido | Autenticazione, mount, permessi |
| Docker Model Runner | Inferenza locale o privata | Modello, endpoint, porta, contesto |
| Immagine propria | Tool fissi e team | Dockerfile, utente, update, secret |
| Docker Compose | Più servizi | Nomi, rete, volumi, pulizia |
Prima di eseguire OpenCode nel container
Controlla l'origine dell'immagine prima di montare codice. Preferisci documentazione ufficiale o Dockerfile, base e aggiornamenti verificabili.
Monta solo il progetto ed evita home, chiavi SSH, credenziali cloud e socket Docker dell'host.
Inietta i secret a runtime, mai in Dockerfile, layer, Compose versionato o cronologia shell; controlla `.dockerignore`.
Inizia con repository piccolo, lettura, modifica sicura, diff Git e test senza effetti in produzione.
7 controlli per un setup affidabile
I controlli trasformano l'avvio in evidenza: modello assente indica endpoint, file errati indicano mount, scrittura ampia indica permessi.
Usa lo stesso ordine su laptop e CI e registra immagine, provider, percorso e comando.
Una risposta non dimostra sicurezza se immagine o volume sono troppo ampi.
- Ispeziona l'immagine Annota nome, tag o digest, base, update e utente.
- Crea uno spazio ristretto Monta solo il progetto e usa branch o worktree separato.
- Collega un provider Valida endpoint e tieni la chiave fuori dal repository.
- Conferma il modello Controlla risposta, ID, contesto e porta nel container.
- Esegui lettura Chiedi un riepilogo prima delle modifiche.
- Rivedi un diff Modifica documentazione o fixture e rifiuta file estranei.
- Registra pulizia Ferma il container, rimuovi volumi temporanei e annota la correzione.
Docker Model Runner ed endpoint compatibili con OpenAI
Docker Model Runner è utile per inferenza locale o privata. Attiva un modello, verifica la rete e usa URL e ID esatti.
Prova separatamente endpoint e OpenCode, poi conferma contesto, permessi e sessione.
Limita interfaccia e porte e annota gateway host, nome Compose o server remoto.
# Illustrative shape only; confirm current image, endpoint, and model fields in official docs
docker run --rm -it --mount type=bind,src="$PWD",dst=/workspace --workdir /workspace -e OPENAI_API_KEY -e OPENAI_BASE_URL opencode-image:reviewed opencodePermessi, secret, porte e Git
Il limite del container è solo una parte dei permessi. OpenCode, Docker, utente Linux, provider e Git devono essere coerenti.
Documenta comando minimo, pulizia, volumi, porte private e riproducibilità dell'immagine.
La prima scrittura deve essere minima. Fermati se compaiono secret, bundle o file esterni.
| Controllo | Default più sicuro | Segnale di rischio |
|---|---|---|
| Secret | Iniezione a runtime e rotazione | Chiave in Dockerfile, layer o Compose |
| File | Un progetto, non-root, worktree | Home, SSH o socket Docker |
| Rete | Solo endpoint e porte necessarie | Tutte le porte o endpoint pubblico |
| Git | Status e diff dopo ogni write | Write fuori dal worktree |
| Immagine | Digest o tag verificato | `latest` senza responsabile |
Troubleshooting: separa il livello che fallisce
Se manca `opencode`, controlla immagine, PATH, entrypoint e utente prima del provider.
Se il modello manca, prova l'endpoint nel container e verifica URL, DNS, porta, credenziali e ID; `localhost` può indicare il container.
Se la modifica è errata, riduci mount e ambito, verifica permessi, ripeti la lettura e annota digest, modello e diff.
Se una prova funziona ma il giro successivo vede file diversi, confronta prima il mount e la directory di lavoro. Uno status pulito all'avvio, una richiesta in sola lettura e un diff salvato aiutano a capire se il problema viene dal prompt, dai permessi o dal container.
Per rendere il flusso ripetibile in team, registra insieme tag o digest dell'immagine, provider, ID del modello, porta, branch e comando di pulizia. Un'altra persona può così ripetere il controllo senza indovinare il nome dell'host. Quando cambia l'immagine, verifica di nuovo utente, PATH, certificati e volumi consentiti prima di allargare la scrittura.
| Sintomo | Livello probabile | Primo controllo |
|---|---|---|
| Comando assente | Immagine o PATH | Versione nella stessa immagine e cartella |
| Provider senza modello | Endpoint o ID | Test nel container e confronto ID |
| File assenti | Mount o workdir | Mostra workdir e progetto |
| Timeout | Rete, porta, quota o modello | Richiesta breve |
| File inattesi | Mount o permessi | Ferma, controlla Git e riduci mount |
FAQ OpenCode con Docker
OpenCode può funzionare in Docker?
Sì, ma immagine, mount, credenziali, rete e permessi vanno verificati.
Docker Sandbox o immagine propria?
Sandbox per isolamento gestito; immagine propria per dipendenze fisse se puoi mantenerla.
Come collego Model Runner?
Verifica il servizio e usa URL compatibile OpenAI e ID esatto nella stessa rete.
Cosa devo montare?
Solo progetto o worktree; evita home, chiavi, credenziali e socket Docker.
Serve Compose?
No. È utile per più servizi e rete privata.
Perché il modello non appare?
Controlla base URL, localhost, ID, porta, chiave e nome del servizio.
Fonti ufficiali da verificare
I dettagli cambiano. Controlla immagini, autenticazione, endpoint e permessi nella documentazione ufficiale prima dei comandi sensibili.