Nell'articolo di introduzione ad ASP.NET Core e Docker (https://www.aspitalia.com/articoli/asp.net-core/docker-aspnet-core-portare-nostri-siti-web-container.aspx), abbiamo visto che portare un nostro sito web su container consiste, in buona sostanza, nel creare un'immagine con all'interno tutti i file necessari alla sua esecuzione. Questa immagine poi potrà essere utilizzata per eseguire l'applicazione all'interno di un container, in un qualsiasi ambiente in cui vogliamo effettuarne il deploy.
Un aspetto che non abbiamo trattato, però, è come gestirne la configurazione, per esempio specificando una diversa connection string, a seconda dell'ambiente di deploy (sviluppo, test, stagin, produzione).
Come abbiamo visto in passato (https://www.aspitalia.com/script/1235/Gestire-Configurazione-ASP.NET-Core-Ambienti.aspx) in ASP.NET Core possiamo referenziare diversi file appSettings e selezionare a runtime quello che vogliamo utilizzare.
Questo approccio, però, impone che tutti questi file siano precostituiti e, se stiamo usando Docker, siano inclusi nella immagine o condivisi dall'esterno, con il risultato di essere piuttosto laborioso.
Una tecnica più semplice consiste invece nell'effettuare l'override delle varie sezioni di configurazione tramite variabili d'ambiente.
Immaginiamo di avere un file appSetting.json come il seguente, nel quale abbiamo una sezione in cui specificare gli URL dei vari servizi di cui l'applicazione ha bisogno.
{ "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } }, "services": { "backend": "http://backend/" } }
In qualsiasi momento, possiamo modificare uno di questi valori semplicemente creando una variabile d'ambiente che corrisponda al path, all'interno del json, della chiave su cui vogliamo intervenire, utilizzando come separatore il doppio underscore "__". Per esempio, per specificare un nuovo URL per backend, possiamo impostare questa variabile in powershell:
$Env.services__backend="http://alternateaddress/"
Queste variabili possono anche essere impostate anche nel comando Docker Run, così che siano visibili solo all'interno dell'ambiente di esecuzione del container. Per esempio:
docker run -e "services__backend=http://alternateaddress/" myImage
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Utilizzare WhenEach per processare i risultati di una lista di task
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Il nuovo controllo Range di Blazor 9
Simulare Azure Cosmos DB in locale con Docker
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Path addizionali per gli asset in ASP.NET Core MVC
Creare agenti facilmente con Azure AI Agent Service
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Ricevere notifiche sui test con Azure Load Testing
Introduzione alle Container Queries
I più letti di oggi
- Eseguire query in contemporanea con EF
- Fissare una versione dell'agent nelle pipeline di Azure DevOps
- .NET Aspire per applicazioni distribuite
- Utilizzare Locust con Azure Load Testing
- Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
- Repaint, Reflow e Compositing: Come Funziona il Rendering nel Browser
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!