Come eseguire un'app .NET in Docker

0
228

Docker è un servizio di containerizzazione, utilizzato per eseguire applicazioni in ambienti isolati con tutte le dipendenze e il codice di cui ha bisogno per funzionare. Può eseguire tutti i tipi di applicazioni, inclusi i programmi basati su .NET che utilizzano immagini runtime fornite da Microsoft.

Dockerizzazione di .NET

Microsoft fornisce immagini di base predefinite per l'esecuzione di applicazioni .NET. Non dovrai gestire l'installazione del runtime .NET o dell'SDK nel tuo contenitore Docker, poiché puoi semplicemente estendere l'immagine di base di Microsoft per la versione di .NET utilizzata dalla tua applicazione.

< p>

A meno che non si preveda di distribuire contenitori Windows su un server Windows, sarà necessario utilizzare .NET Core o .NET 5. Il runtime .NET Framework precedente non è multipiattaforma e non verrà eseguito su contenitori basati su Linux.

Se non hai Docker installato sul tuo computer di sviluppo, dovrai installare Docker Desktop per avere accesso alla CLI. Se stai utilizzando WSL su Windows, ti consigliamo di abilitare il motore basato su WSL 2, che fornisce prestazioni migliori.

Per testare le cose, creeremo una nuova applicazione API ASP.NET. La stessa procedura generale si applica a qualsiasi tipo di applicazione, poiché tutto ciò che Docker sta facendo è eseguire una build ogni volta che si compila il contenitore e avviare l'applicazione con un comando entrypoint.

Annuncio

Crea un nuovo file chiamato Dockerfile alla radice del tuo progetto, dove la tua soluzione si trova. Incolla nella seguente configurazione:

FROM mcr.microsoft.com/dotnet/core/sdk AS build-env WORKDIR /app # Copia csproj e ripristina COPY *.csproj ./RUN dotnet restore # Copia tutto il resto e crea COPY . ./ESEGUI dotnet publish -o out # Crea un'immagine di runtime DA mcr.microsoft.com/dotnet/core/runtime WORKDIR /app COPY –from=build-env /app/out . ENTRYPOINT [“dotnet”, “DockerTest.dll”]

Questo Dockerfile estrae l'immagine .NET Core SDK per eseguire la compilazione. Copia il file .csproj e lo ripristina, quindi copia tutto il resto ed esegue una build. Quindi, crea una nuova immagine dall'immagine .NET Runtime e copia gli artefatti di compilazione.

Infine, l'entrypoint è definito qui come dotnet DockerTest.dll. Questo avvierà il server Web ASP.NET, anche se potrebbe essere necessario modificare i parametri per la tua applicazione o specificare un comando entrypoint completamente diverso.

Puoi provare a eseguire il tuo contenitore con l'esecuzione del contenitore docker, passandolo nell'ID del contenitore di build:

contenitore docker esegui containerid

Per un'applicazione ASP.NET, devi aprire le porte mappando una porta sull'host su una porta sul container:

docker run -p 80:80 containerid

Puoi leggere il nostro guida per lavorare con Docker e Dockerfiles per saperne di più.