Docker e le applicazioni .Net 5.0

Le applicazioni .NET 5.0 su multipiattaforma e con il supporto a Docker sarà possibile incapsularle all'interno di immagini.

il
Sviluppatore e Trainer, Collaboratore di IProgrammatori

 In questo articolo dal titolo Docker e le applicazioni .NET 5.0 tratteremo i seguenti argomenti:

  • cos'è la piattaforma Docker
  • come si può aggiungere supporto Docker per applicazioni .NET 5.0 e non

Per intenderci in una sessione giornaliera con ruolo di sviluppatori siamo abituati a interagire con sistemi operativi ed applicazioni all'interno di virtual machine con Hyper-V oppure con sistemi VMWare. Il vantaggio è sempre stato quello di non partizionare l'HD con il dual boot di sistemi operativi; però ogni volta che bisognava distribuire il sistema virtualizzato ci si rendeva conto che subiva aumenti vertiginosi del file immagine a livello di GB.

L'evoluzione dell'IT ed anche lo sviluppo di piattaforme Cloud ha maturato la best practice di configurare la virtualizzazione a container di molti sistemi informatici che prima richiedevano la creazione di ambienti virtuali con i due hypervisor di grande utilizzo in scale Enterprise (Hyper-V componente di Windows 10 oppure ambienti Windows Server) oppure sistemi VMWare.

Per comprenderci per creare uno spazio SQL virtualizzato bisognava creare dapprima:

  • una immagine virtualizzata del sistema operativo Windows Server ad esempio avendo a disposizione di una ISO
  • All'interno di questa immagine installare SQL Server standalone e tutti i relativi strumenti di supporto

Si guardava alla fine il peso dell'immagine e ci si rendeva che approssimativamente andava oltre i 10 GB

In contrapposizione a questa best practice ne è nata una ancora più scalabile che è Docker e ci domandiamo a tal proposito cos'è Docker?

Docker è una piattaforma che invece ha una versione minimale del sistema operativo Linux e permette di distribuire software in package denominati container. Esiste un portale che indicizza ogni giorno tanti sistemi informatici virtualizzati a container raggiungibile con l'url www.docker.com/. Da questo sito è possibile scaricare un software denominato Docker Desktop che offre una serie di strumenti per poter da terminale scaricare da un repository delle immagini (container) di applicazioni tipo MySQL, SQL Server, Oracle, etc. etc. Per avere un elenco completo e descrizione dei vari container (package) rilasciati sulla piattaforma basta visitare l'url  hub.docker.com/search

Per comprendere ed utilizzare al massimo questo articolo bisognerà aver a disposizione i seguenti strumenti:

  • Sistema Operativo Windows 10 Enterpise oppure Windows 10 Home Edition
  • Visual Studio 2019 qualsiasi edizione (ad esempio la Community Edition) e tra i carichi di lavoro si dovrà aggiungere i tools cross-platform in modo da poter aggiungere il supporto a Docker sia per applicazioni web legacy ossia non .NET 5.0 oppure per applicazioni web cross-platform .NET 5.0
  • Se non dovesse essere stato mai installato Docker Client, da Visual Studio appena si configura una di queste due tipologie di applicazioni, richiedendo il suppporto a Docker verrà installato Docker nel sistema 

Apriamo Visual Studio 2019 e creiamo un'applicazione web legacy ossia non .NET 5.0:

Si va avanti nella creazione del progetto web assegnando un nome alla soluzione:

nel secondo step si clicca sul pulsante crea e si va a scegliere la tipologia di applicazione web da creare:

proprio in questa fase si sceglie o meno di aggiungere alla soluzione che si sta creando il supporto a Dokcer

Ecco come si presenta la finestra Esplora Soluzione:

all'interno di questa finestra dovrete cercare un file Docker file. Aprendolo direttamente da Visual Studio avrete:

Dopo la parola chiave From c'è un percorso su Docker hub che permette l'installazione del web server IIS e le successive istruzioni permettono nell'insieme di copiare la versione compilata dalla  sottocartella publish di obj/Docker all'interno del path dopo la parola chiave WORKDIR. Al termine del processo di creazione immagine avremo  l'assegnazione finale di un URl per mezzo del quale  si potrà navigare l'applicazione web all'interno del browser web.

all'interno di questa illustrazione grafica vedremo il risultato del processo di generazione del container che porta il nome della soluzione e si chiama webdockernet.

Nella barra degli strumenti di Visual Studio si creerà un pulsante Docker cliccando il quale direttamente da Visual Studio si provvederà a compilare la soluzione e verrà creata l'immagine a container che sarà visualizzata nel browser attraverso un'applicazione web, come vedremo nella seguente illustrazione grafica. L'applicazione che si vedrà nella seguente illustrazione grafica verrà visualizzata anche fuori dall'ambiente di sviluppo. Questo perchè sulla workstation attraverso la dashboard di Docker è uso l'immagine che porta il nome della soluzione applicativa.

L'altro argomento in programma per questo articolo è la creazione di applicazioni .NET 5.0 con il supporto Docker, come si vede da questa illustrazione grafica:

Si creerà un'applicazione console con .NET 5.0 e si aggiungerà dalla finestra Esplora Soluzione il supporto a docker.

Ecco la finestra Esplora Soluzione:

con il tasto destro del mouse sulla soluzione si clicca su Aggiungi->Supporto Docker ed in automatico si provvederà a creare il processo Docker attraverso un file che verrà aggiunto altrettanto alla soluzione.

si farà uno switch sul container Linux in modo che l'applicazione sarà distribuita a container sull'host Linux

Altra modifica da compiere al progetto creato è quello di modificare la versione target ossia .netcoreapp.31 a net5.0. Si fa tasto destro del mouse sulla soluzione e si sceglie modifica file di progetto

si va a cambiare il TargetFramework e si farà anche una modifica al File DockerFile

Dalla finestra Esplora soluzione si fa tasto destro del mouse e si sceglie Open in Terminal e si lancia questo comando di buildare il file Dockere si va a taggare l'immagine helloworld utilizzando come sorgente il file Docker aggiunto alla soluzione e modificato.

Con il comando run di docker si lancia l'immagine a container buildata e si avrà nella console terminale il messaggio classico Hello World.

C'è tantissima documentazione su come provvedere a rendere a container tutte le applicazioni che prima dovevamo avere giga e giga di files. Avere il supporto integrato di Docker in Visual Studio è il top per poter aggiungere modificare il supporto alle applicazioni di questa tecnologia.