Personalizzare le impostazioni del progetto e dell'editor

Completato

È stato configurato un contenitore di sviluppo per uno dei progetti dell'agenzia, sarà ora semplicemente a disposizione e funzionante per chiunque abbia Docker e l'estensione Dev Containers. Sarà comunque necessario installare le dipendenze. Potrebbero essere necessarie anche alcune estensioni di Visual Studio Code non note.

Fortunatamente, è possibile personalizzare completamente e automatizzare tutta la configurazione del progetto usando il file devcontainer.json.

Informazioni dettagliate su devcontainer.json

Verranno esaminate di seguito le opzioni principali del file.devcontainer/devcontainer.json del progetto del dashboard dei prodotti. È molto lungo per esaminarlo tutto insieme, quindi verrà presentato in base alle singole sezioni.

Configurazione della build

La image proprietà definisce il modo in cui verrà creato il contenitore, in base a ciò che è noto come immagine del contenitore.

"image": "mcr.microsoft.com/devcontainers/python:0-3.11"
},

Questa immagine è ospitata nel repository devcontainers/images, in cui è possibile verificarlo ulteriormente.

È anche possibile usare i file noti come Dockerfile o un file Docker Compose per configurare la configurazione. Questi file possono risiedere nella cartella .devcontainer e consentono di configurare ulteriormente determinati requisiti di installazione, ad esempio l'installazione di software aggiuntivo. Per altre informazioni, vedere la documentazione del contenitore di sviluppo.

Funzionalità

Il contenitore di sviluppo Funzionalità è costituito da unità condivisibili di codice di installazione e configurazione del contenitore di sviluppo. Il nome deriva dall'idea che fare riferimento a uno di essi consente di aggiungere più strumenti, runtime o librerie "Funzionalità" nel contenitore di sviluppo per l'uso da parte dell'utente o dei collaboratori.

Quando si usa il comando VS Code Dev Containers: Add Dev Container Configuration Files (Aggiungere file di configurazione di Dev Container), viene presentato un elenco di script per personalizzare le configurazioni dei contenitori di sviluppo esistenti, ad esempio l'installazione di Git o l'interfaccia della riga di comando di Azure.

Impostazioni del progetto

Una sezione successiva del file è dedicata direttamente alla configurazione del progetto.

customizations imposta proprietà specifiche del prodotto per prodotti che supportano i contenitori di sviluppo, ad esempio VS Code e GitHub Codespaces.

Ad esempio, è possibile impostare vscode.settings per copiare impostazioni specifiche del computer nel contenitore. Queste impostazioni potrebbero essere presenti nella configurazione specifica di Visual Studio Code. Aggiungendoli a settings, si garantisce che tutti gli utenti che aprono questo progetto ottengano queste impostazioni VS Code specifiche.

In questo contenitore Python è possibile visualizzare queste impostazioni nell'immagine di base mcr.microsoft.com/devcontainers/python:0-3.11. Offrono all'utente un'esperienza di modifica di Python migliorata.

  • È possibile usare la matrice extensions per specificare quali estensioni di Visual Studio Code devono essere installate in Visual Studio Code quando si connette al contenitore. La normale configurazione di Visual Studio Code e tutte le estensioni già installate non saranno presenti quando si usa Dev Containers. Le estensioni vengono specificate in questa sezione con il relativo ID.

postCreateCommand

La proprietà postCreateCommand consente di eseguire tutti i comandi desiderati dopo la creazione del contenitore. Probabilmente si ricorda che nel primo esercizio è stato necessario eseguire il comando pip3 per installare le dipendenze. Ma è possibile che altri non siano a conoscenza di questo requisito. È possibile configurarlo in questa sezione in modo che venga eseguito automaticamente, senza che altri debbano preoccuparsene.

Nel prossimo esercizio, si modificherà il file devcontainer.json per automatizzare diversi aspetti del progetto e agevolare ulteriormente il lavoro degli sviluppatori.