Manchmal erfordert es die Situation, eine Blazor Web App in einem Docker Container zu betreiben. unabhängig von Windows, IIS oder einem Webserver mit Plesk. Dieser Beitrag zeigt wie man mit wenig Aufwand einen ASP.NET Blazor Container erstellt.
HowTo: Dockerized Blazor
Das folgende Beispiel verwendet ASP.NET 9. Die komplette Blazor App bleibt in einem Ordner ausßerhalb des Docker-Containers. So muss nicht bei jedem Update das Image neu erzeugt werden und die Daten unserer App sind persistent:
Blazor Web App publizieren
Zuerst erstellen wir wie gewohnt unsere Blazor Web App und publizieren sie:
1 2 3 |
dotnet new blazor -n blazor-web-app cd blazor-web-app dotnet publish -c Release |
Blazor Docker Image bauen
Als Nächstes legen wir einen Ordner für unser Docker-Image an.
Darin befindet sich ein leerer Ordner “app” und eine Datei “Dockerfile” mit dem folgenden Inhalt:
1 2 3 4 5 |
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base WORKDIR /app COPY app . EXPOSE 8080 ENTRYPOINT ["dotnet", "blazor-web-app.dll"] |
Wenn wir nicht mit ASP.NET 9 arbeiten, muss die erste Zeile auf die entsprechende Framework-Version angepasst werden. Der Einstiegspunkt für den Start unserer Blazor-App ist ‘blazor-web-app.dll’, entsprechend unserem Projektnamen.
Unsere publizierte Blazor App kopieren wir von /bin/Release/net9.0 aus unserem Projekt-Ordner in den Ordner app/ neben unserem Dockerfile.
Wir wechseln in unseren Docker-Ordner und bauen das Image. Das Image hat den Namen “blazor-web-app”:
1 |
docker build -t blazor-web-app . |
Blazor Docker Container starten
Nun starten wir unseren Docker-Container. Hierbei mappen wir den lokalen Ordner ./app als Volume auf den Ordner /app im Container und geben Port 8080 nach außen frei. Der so erzeugte Container hat den Namen “blazor_demo”:
1 |
docker run -v ./app:/app -p 8080:8080 --name blazor_demo blazor-web-app |
Abschliessend rufen wir unsere Blazor-App im Browser auf:
1 |
http://localhost:8080 |
Bonus: Docker Cheat Sheets
Neu bei Docker oder Lust auf mehr?
- Hier gibt es eine schöne Zusammenfassung der Docker CLI-Kommandos.
- Und hier ein Cheat-Sheet mit allen Dockerfile-Befehlen.