In .NET Aspire, un container è una dipendenza esterna, come un database o un message broker (es. PostgreSQL, Redis, RabbitMQ), che viene orchestrata tramite il progetto Aspire AppHost.
Una definizione che non ci è nuova: abbiamo già parlato negli script precedenti riguardo l'integrazione di servizi terzi come Redis, senza però puntare l'accento sulla modalità con cui il servizio ci venisse offerto. Facciamo dunque un passo indietro
var custom = builder.AddContainer("myapp", image: "mcr.microsoft.com/dotnet/samples:aspnetapp")
.WithHttpEndpoint(port: 8000, targetPort: 8080);In questo caso abbiamo creato una risorsa container al cui interno girerà un'istanza di samples:aspnetapp, che tramite la mappatura degli endpoint sarà interrogabile tramite un url predefinito.
Per ogni tipologia di container, anche in base alla libreria che lo gestisce, abbiamo vari metodi di implementazione, ad esempio per Redis troviamo AddRedis("redis-abc"), funzionalità specifiche che semplificano parte della configurazione. Una cosa essenziale è però fornita out-of-the-box: la persistenza del container tra un'esecuzione e l'altra
var custom = builder.AddContainer("myapp", image: "mcr.microsoft.com/dotnet/samples:aspnetapp")
.WithHttpEndpoint(port: 8000, targetPort: 8080)
.WithLifetime(ContainerLifetime.Persistent);Tramite WithLifetime stiamo scollegando il flusso di run/debug dal ciclo di vita del container. Il primo caso d'uso che può venire alla mente è un server API il cui unico scopo è fornire lo stesso set di dati ad ogni chiamata: la sua creazione e distruzione durante lo sviluppo porterebbe solo ad una perdita di tempo. Impostando però il suo ciclo di vita come persistente, questo rimarrà attivo, indipendentemente dai nostri cambiamenti.
Se abbiamo invece la necessità di costruire la nostra immagine, definita all'interno di un dockerfile, possiamo fornire il nome, il percorso ed i parametri, lasciando che .NET Aspire configuri l'ambiente per noi
builder.AddDockerfile("my-app", "./My-app")
.WithBuildArg("DOT_NET_VERSION", "versione-dot-net");Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare comandi nella dashboard .NET Aspire
Come automatizzare il download dei report di billing da GitHub Enterprise
Utilizzare il Null conditional assignment di C# 14
Gestire pubblicazione Kubernetes tramite .NET Aspire
Ciclo di vita risorse con .NET Aspire
Stop alle password con Azure Managed Identity
Mischiare codice server side e client side in una query LINQ con Entity Framework
Centralizzare gli endpoint AI Foundry con Azure API Management
Agentic Workflows in GitHub
Response streaming con Blazor e .NET 10
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
Utilizzare WebJobs su Linux con Azure App Service


