Come modificare il codice nei contenitori Docker con Visual Studio Code

0
194

Lo sviluppo o il debug del codice all'interno dei container Docker può essere complicato. Di solito ci si collega al contenitore e si utilizzano le utilità della shell per modificare i file. L'estensione Contenitori remoti di Visual Studio Code ti consente di aprire le cartelle all'interno dei contenitori, in modo da poterle utilizzare nell'editor di codice.

Lo sviluppo remoto funziona con Docker Desktop 2.0 e versioni successive per Windows, macOS e Docker Motore 18.06 e versioni successive per Linux. Se utilizzi Windows 10 Home, devi avere installato l'aggiornamento di aprile 2020, Docker Desktop 2.3 e il sottosistema Windows per Linux.

Sul lato del contenitore, VS Code è compatibile con entrambi i contenitori x64 e ARM. Puoi utilizzare i sistemi operativi Alpine, Debian, Ubuntu, CentOS e RHEL. Se la tua immagine di base non funziona immediatamente, dovresti essere in grado di installare pacchetti aggiuntivi al suo interno per completare la connessione.

Per iniziare

Avvia VS Code, premi Ctrl+Shift+P e cerca “estensioni”. Seleziona “Installa estensioni” elemento per visualizzare la barra laterale. Nel riquadro delle estensioni, cerca “Remoto – Contenitori” e installa l'elemento corrispondente.

Dopo l'installazione dell'estensione, apparirà un nuovo pulsante verde nella parte inferiore sinistra della barra di stato. Fare clic qui per visualizzare la tavolozza dei comandi, precompilata con i comandi remoti disponibili. Se preferisci evitare di usare il mouse, puoi trovare i comandi anche premendo Ctrl+Shift+P e digitando “remoto”. L'estensione apparirà anche in altre aree dell'interfaccia utente, come la pagina di benvenuto e il pannello di apertura della cartella.

Pubblicità

Per aprire la tua prima cartella Dockerized, visualizza l'elenco dei comandi e seleziona “Attach to Running Container”. Dovrai accettare un avviso che indica che il contenitore potrebbe eseguire codice non attendibile. Dovresti collegarti solo a contenitori creati da immagini di cui ti fidi, poiché un contenitore dannoso con un file dell'area di lavoro VS Code potrebbe compromettere il tuo sistema.

VS Code visualizzerà un elenco dei container Docker in esecuzione sul tuo sistema. Seleziona il contenitore a cui vuoi connetterti. Verrà avviata una nuova finestra. Potrebbero essere necessari alcuni secondi per l'avvio mentre VS Code installa i suoi componenti del server remoto nel contenitore. Vedrai il contenitore attivo visualizzato nella parte inferiore sinistra della barra di stato.

Una volta che la finestra è pronta, puoi iniziare a lavorare. Fare clic su “Apri cartella” pulsante nel riquadro sinistro per visualizzare un prompt di selezione file. Questo mostra il filesystem all'interno del contenitore. Passa alla directory che desideri aprire e premi “OK”.

La barra laterale si aggiornerà per visualizzare i contenuti della directory selezionata. Fare clic su uno dei file per aprirlo nell'editor VS Code. Ora puoi apportare modifiche all'interno del contenitore, senza copiare manualmente i file o configurare un montaggio di bind della directory di lavoro. Ciò massimizza l'efficienza quando si utilizza un ambiente di sviluppo Dockerized o si esegue il debug di un container malfunzionante.

È disponibile il set completo di funzionalità di VS Code, incluso il completamento del codice IntelliSense e il relativo toolkit di debug. Riquadri come la console e il terminale si collegheranno ai flussi di input e output del contenitore.

Come funziona?

La prima cosa da riconoscere sull'integrazione è che VS Code altererà il filesystem del tuo container. Installerà un server nei contenitori a cui ti connetti, che restituisce le informazioni al client dell'editor.

Annuncio

Il server monitora il filesystem, legge i file e avvia i processi all'interno del contenitore. Questo potenzia funzionalità come il debugger di VS Code. L'editor chiederà al server di eseguire il tuo sorgente, permettendogli di ispezionare il codice in esecuzione all'interno del contenitore.

Allo stesso modo, VS Code installerà copie delle tue altre estensioni all'interno del contenitore. Ciò garantisce che abbiano pieno accesso al filesystem del contenitore, quindi funzioneranno senza discrepanze rispetto a una cartella locale. Il risultato finale è un'esperienza di editor a tutti gli effetti che opera in modo trasparente, anche se è distribuita tra host e container. A seconda delle dimensioni dell'ambiente, la configurazione iniziale potrebbe richiedere alcuni istanti, ma il server container verrà memorizzato nella cache per un uso successivo.

Contenitori di sviluppo

Oltre ad aprire file in un contenitore esistente, il sistema remoto ti consente di definire contenitori di sviluppo che incapsulano il tuo ambiente di lavoro. Un tale contenitore dovrebbe includere tutte le dipendenze software che installeresti prima di sviluppare la tua applicazione localmente.

Quando utilizzi un contenitore di sviluppo, puoi associare il montaggio della directory di lavoro o utilizzare un volume isolato. Quest'ultima opzione evita l'inquinamento del filesystem e offre prestazioni migliorate poiché è più nativo di Docker.

I contenitori di sviluppo vengono creati dai file .devcontainer/devcontainer.json. Descrivono la configurazione di Docker e Visual Studio che avvia il tuo ambiente di sviluppo.

{ "image": "mcr.microsoft.com/vscode/devcontainers/javascript-node:16", "extensions": " EditorConfig.EditorConfig", "forwardPorts": [3000] }

Il file devcontainer.json mostrato sopra configura un contenitore di sviluppo che utilizza il modello Node.js di Microsoft. L'estensione EditorConfig VS Code è abilitata, aggiungendo il supporto per i file .editorconfig nella directory di lavoro. La porta 3000 viene quindi mappata dall'host al contenitore.

Annuncio

I file del contenitore di sviluppo supportano anche alcune altre opzioni. È possibile impostare i valori settings.json di VS Code, aggiungere un comando da eseguire all'interno del contenitore e definire l'utente con cui verrà eseguito il server VS Code.

Se non vuoi creare tu stesso un file di configurazione del contenitore, il comando Contenitori remoti: aggiungi file di configurazione di sviluppo ne aggiungerà automaticamente uno al tuo progetto. Sarai in grado di selezionare da un elenco di modelli preconfigurati che puoi personalizzare in seguito.

Una volta che hai un file devcontainer.json nel tuo progetto, esegui il comando < strong>Contenitori remoti: Ricostruisci contenitorecomando dalla tavolozza dei comandi. Questo creerà un'immagine del contenitore utilizzando la configurazione specificata. Al termine della build, esegui Remote-Containers: Reopen Folder in Container per aprire la directory locale corrente all'interno di un nuovo contenitore di sviluppo.

Se stai utilizzando un repository Git , di solito è più semplice clonare il repository direttamente in un contenitore. Contenitori remoti: clone di repository nel volume del contenitoreIl comando accetta un URL Git da clonare. Creerà un nuovo volume e lo collegherà a un'istanza di contenitore di sviluppo. Ciò ti consente di lavorare su repository Git senza clonarli nel tuo filesystem locale, evitando l'inquinamento non necessario. VS Code condivide automaticamente le tue credenziali Git locali con il contenitore.

Configurazione dell'estensione

Il telecomando – L'estensione Containers include diverse impostazioni che ti consentono di configurare la tua esperienza container. Puoi trovarli con il comando Contenitori remoti: impostazioni per contenitori remoti.

La prima raccolta di impostazioni riguarda i dotfile. I dotfile si riferiscono ai file di configurazione che iniziano con un punto (.). I contenitori remoti possono clonare automaticamente un repository Git di dotfile in nuovi contenitori, aiutandoti a iniziare a funzionare con le tue solite impostazioni.

Pubblicità

Aggiungi l'URL del tuo repository dotfiles all'impostazione Repository. Il repository verrà clonato nel percorso del percorso di destinazione, che per impostazione predefinita è ~/dotfiles. Se vuoi eseguire un comando dopo che il repository è stato clonato, specificalo come Install Command.

Remote-Containers utilizza per impostazione predefinita la finestra mobile come binario che esegue i comandi del contenitore. Puoi cambiarlo in qualsiasi binario compatibile con Docker CLI con l'impostazione Docker Path. Se stai usando Podman, specificando podman come questo valore ti permetterà di lavorare con i suoi contenitori usando VS Code.

È possibile configurare gli interni remoti predefiniti sotto l'intestazione Estensioni predefinite. Fare clic su “Aggiungi elemento” per scegliere un'estensione da aggiungere a ogni contenitore. Ciò ti consente di garantire la disponibilità globale delle estensioni indispensabili, anche se non sono elencate in un file devcontainer.json.

Un ultimo gruppo di impostazioni riguarda la configurazione di Git. Quando “Copia Git Config” è selezionato, il tuo file .gitconfig locale verrà copiato automaticamente nei contenitori. L'attivazione di questa opzione garantisce che i tuoi commit siano correttamente attribuiti ai dettagli dell'utente che stai già utilizzando localmente.

Il “Git Credential Helper Config Location” L'impostazione controlla il file di configurazione in cui verranno scritte le nuove credenziali Git. Puoi selezionare dal tuo file locale per utente, ~/.gitconfig, o dalla posizione del sistema globale, /etc/gitconfig.

Riepilogo

Il telecomando – L'estensione Containers per Visual Studio Code consente di modificare file e cartelle all'interno dei container Docker. Funziona perfettamente con le funzionalità dell'editor di codice VS, inclusi IntelliSense, indicizzazione delle directory, debug ed estensioni. Internamente, VS Code avvia un server di sviluppo all'interno del contenitore in modo che i suoi strumenti abbiano pieno accesso al filesystem con cui stanno lavorando.

Pubblicità

Ci sono diversi casi d'uso possibili per questa funzionalità, con Ambienti di sviluppo dockerizzati e container al volo modificano i principali contendenti. Sebbene l'idea di utilizzare i contenitori per sistematizzare lo sviluppo sia in circolazione da un po', VS Code rende molto più semplice iniziare offrendo un'esperienza IDE che comprende Docker in modo nativo.

Potresti preparare un'immagine Docker che dia sviluppatori tutto ciò di cui hanno bisogno per lavorare sul tuo sistema – linguaggio di programmazione, dipendenze e strumenti pratici. Gli sviluppatori avviano un contenitore, si collegano ad esso da VS Code e svolgono il proprio lavoro senza installare nulla (tranne Code) sulla propria macchina. Se è necessario correggere una dipendenza, è sufficiente aggiornare l'immagine Docker condivisa e chiedere agli sviluppatori di estrarre il nuovo tag.