Utilizzare Containers in .NET Aspire

di Morgan Pizzini, in ASP.NET Core,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi