paint-brush
So stellen Sie eine ASP.NET Core-Webanwendung in Azure über ein Docker-Image bereitby@igorlopushko
998
998

So stellen Sie eine ASP.NET Core-Webanwendung in Azure über ein Docker-Image bereit

Igor Lopushko6m2024/01/19
Read on Terminal Reader

In diesem Artikel gebe ich eine detaillierte Anleitung zum Erstellen einer einfachen ASP.NET Core-Webanwendung, zum Erstellen eines Docker-Images mit Ihrer Anwendung und zum einfachsten Weg, diese in Azure bereitzustellen. Am Ende verfügen Sie über ein gutes Verständnis dafür, wie Sie Ihre Webanwendung bereitstellen und der ganzen Welt zugänglich machen.
featured image - So stellen Sie eine ASP.NET Core-Webanwendung in Azure über ein Docker-Image bereit
Igor Lopushko HackerNoon profile picture

Einführung

Als Webentwickler mussten wir früher ein geeignetes Hosting für unsere Anwendungen finden, mit allen Komplikationen, die mit der Bereitstellung und Wartung einhergehen. Aber jetzt leben wir in einer neuen Ära, in der Cloud-Anbieter viele Dinge fast kostenlos für uns erledigen können. Für .NET-Entwickler scheint Microsoft Azure die naheliegendste Wahl zum Hosten von Webanwendungen zu sein.


Docker ist eine weitere Technologie, die es ermöglicht, Ihre Anwendung von der Plattform und Umgebung zu abstrahieren, auf der Sie sie ausführen.


In diesem Artikel gebe ich eine detaillierte Anleitung zum Erstellen einer einfachen ASP.NET Core-Webanwendung, zum Erstellen eines Docker-Images mit Ihrer Anwendung und zum einfachsten Weg, diese in Azure bereitzustellen. Am Ende verfügen Sie über ein gutes Verständnis dafür, wie Sie Ihre Webanwendung bereitstellen und für die ganze Welt zugänglich machen.

1. Erstellen Sie eine ASP.NET Core-Webanwendung

Für die Entwicklung in diesem Artikel werde ich JetBrains Rider verwenden. Sie können aber jedes beliebige Werkzeug verwenden.


Zuerst müssen Sie ein neues Projekt erstellen. Nennen wir es einfach „ Webapp “.

Neue Lösung erstellen


Nach dem Erstellen eines neuen Projekts sollte es so aussehen:

Projektstruktur


2. Erstellen Sie ein Docker-Image

Ohne Änderungen am Projekt konzentrieren wir uns auf die Dockerfile . Ändern Sie es wie im folgenden Beispiel:

 FROM mcr.microsoft.com/dotnet/aspnet:6.0 as base WORKDIR /app EXPOSE 8080 ENV ASPNETCORE_URLS http://+:8080 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build COPY . /src WORKDIR /src RUN dotnet build "webapp.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "webapp.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "webapp.dll"]


Sie müssen auf die Zeilen EXPOSE 8080 und ENV ASPNETCORE_URLS http://+:8080 achten, um eine Verbindung über HTTP zum Docker-Container herstellen zu können.


Erstellen Sie ein Docker-Image über die Befehlszeile. Sie müssen zum webapp Projektverzeichnis navigieren und den folgenden Befehl ausführen:

 DOCKER_BUILDKIT=1 docker buildx build --platform linux/amd64 --tag drmoz/webapp:latest .


Ich führe es auf einem Mac M1 aus und muss den Parameter --platform explizit angeben, um mit der Azure-Bereitstellung kompatibel zu sein. Ich muss auch das Docker Buildkit aktivieren, indem ich den Parameter DOCKER_BUILDKIT=1 spezifiziere und buildx verwende, um ein Image für eine andere Architektur erstellen zu können.


Wenn Sie es auf der Intel x86/x64-Plattform ausführen, können Sie docker build Befehl verwenden, ohne den Parameter --platform angeben und buildx aktivieren zu müssen.


Sie können Ihr Image anders markieren, aber da ich Docker Hub verwenden werde, muss ich meinen Kontonamen drmoz als Teil des Image-Tags drmoz/webapp:latest angeben.


Wenn ein Image erstellt wird, können Sie überprüfen, ob es im Docker vorhanden ist, indem Sie den folgenden Befehl ausführen:

 docker images


Es sollte auf der Liste stehen:

 REPOSITORY TAG IMAGE ID CREATED SIZE drmoz/webapp latest 0cfac748256b 37 minutes ago 216MB


Lassen Sie uns den Docker-Container ausführen, um zu überprüfen, ob das neu erstellte Image einwandfrei funktioniert. Führen Sie docker run Befehl aus, um einen Container zu starten:

 docker run -p 5555:8080 drmoz/webapp:latest


Geben Sie den Parameter -p an, um den 8080 Port im Container dem 5555 Port Ihres lokalen Computers zuzuordnen. Geben Sie außerdem den Bildnamen an, um den Container zu erstellen. In meinem Fall ist es drmoz/webapp:latest .


Jetzt können Sie in Ihrem Browser http://localhost:5555 navigieren, um die Startseite der ASP.NET Core Web App anzuzeigen.

ASP.NET Core Web App: Startseite



Wir müssen ein Image an den Docker Hub übertragen. Zuvor müssen Sie sich bei der Docker-Registrierung registrieren und ein Repository erstellen. Klicken Sie auf die Schaltfläche „ Repository erstellen “ in der rechten Ecke der Startseite.

Das neue Repository von Docker Hub


Geben Sie das Feld Repository Name an und behalten Sie die Repository-Sichtbarkeit Public bei.


In der Befehlszeile müssen Sie sich bei der Docker Hub-Registrierung anmelden:

 docker login


Danach können Sie ein neu erstelltes Image in die Registrierung übertragen:

 docker push drmoz/webapp:latest


Navigieren Sie zum Repository und Sie sehen die Informationen zum Bild:

Docker Hub-Repository


3. Erstellen Sie eine Web-App in Azure

Jetzt sind wir bereit, unsere ASP.NET Core-Webanwendung in Azure bereitzustellen. Melden wir uns beim Azure-Portal an und erstellen eine neue Ressourcengruppe. Geben Sie den Namen der Ressourcengruppe als „ webapp-rg “ an und klicken Sie auf die Schaltfläche „Überprüfen + erstellen“.


Ressourcengruppe erstellen: Registerkarte „Allgemein“.


Klicken Sie im nächsten Bildschirm einfach auf die Schaltfläche „Erstellen“.

Ressourcengruppe erstellen: Registerkarte „Überprüfen + erstellen“.


Jetzt können wir eine Web-App erstellen. Navigieren Sie zur Seite „Ressource erstellen“ und suchen Sie nach „WebApp“. Klicken Sie auf die Schaltfläche „Erstellen“.

Web-App erstellen: Registerkarte „Grundlegend“.

Sie müssen die Resource Group angeben, die wir zuvor erstellt haben. Geben Sie außerdem einen eindeutigen Name für die Web-App an. Wählen Sie im Feld „ Publish “ „Docker-Container“ aus. Später können wir angeben, welches Docker-Image verwendet werden soll.


Wählen Sie im Abschnitt Pricing plans alle geeigneten Optionen aus, ich empfehle jedoch die Verwendung eines kostenlosen F1- Reifens für Testzwecke. Navigieren Sie zur Registerkarte Docker.


Web-App erstellen: Registerkarte „Docker“.


Wählen Sie auf dieser Registerkarte im Feld Image Source die Option „Docker Hub“ aus. Wählen Sie „Öffentlich“ im Feld Access Type “ aus und geben Sie das Image and tag Wert mit dem Namen des Bildes an, das wir an Docker Hub übertragen haben. Navigieren Sie zur Registerkarte „Überprüfen + erstellen“. Klicken Sie auf dieser Registerkarte auf die Schaltfläche „Erstellen“:

Web-App erstellen: Registerkarte „Überprüfen + erstellen“.


Wenn die neue Ressource bereitgestellt wird, werden Sie gefragt, ob Sie zu dieser Ressource navigieren möchten. tun Sie es einfach. Sie können Informationen zur Web-App sehen.

Informationen zur Web-App-Ressource


Klicken Sie auf die Schaltfläche „Durchsuchen“, um eine bereitgestellte Webanwendung zu öffnen. Wenn alles korrekt gelaufen ist, sollten Sie die ASP.NET Core Web App-Startseite sehen, die derjenigen ähnelt, die Sie in Ihrem Browser gesehen haben, indem http://localhost:5555 navigiert haben.

Aktivieren Sie die kontinuierliche Bereitstellung

Wenn Sie zu den „Deployment Center“-Einstellungen navigieren und „Bereitstellung fortsetzt“ aktivieren, können Sie Ihr Image jedes Mal erneut bereitstellen, wenn Sie ein neues an den Docker Hub übertragen. Auf diese Weise können Sie Änderungen an Ihrem Code vornehmen, ihn mit einem neuen Image an den Docker Hub übertragen und Änderungen in wenigen Minuten in Azure sehen.

Web-App – Bereitstellungscenter

Fehlerbehebung bei Azure-Web-Apps

Um Bereitstellungsprotokolle sehen und Probleme identifizieren zu können, müssen Sie das Speichern von Protokollen im Dateisystem im Kapitel „App Service-Protokolle“ wie folgt aktivieren:

Web-App – App Service-Protokolle


Wenn dies erledigt ist, können Sie zum „Deployment Center“ navigieren und die Protokolle wie folgt anzeigen:

Web-App – Bereitstellungscenter


Zusammenfassung

Wenn Sie diesen Punkt erreicht haben, ist es Ihnen gelungen, eine ASP.NET Core-Webanwendung zu erstellen. Packen Sie es in das Docker-Image und stellen Sie es in Azure bereit. Heutzutage erleichtert Technologie das Leben und beschleunigt den Entwicklungsprozess. Sie können sehen, wie einfach Sie Ihre Anwendung beim Cloud-Anbieter bereitstellen und der ganzen Welt zugänglich machen, einige Tests durchführen und das Ergebnis Ihrer Arbeit sehen können.


Jetzt können Sie mithilfe der Microsoft- Dokumentation in die Details der Azure-Cloud-Anbieter eintauchen. Werfen Sie auch einen Blick auf die Docker- Dokumentation , um ein tieferes Verständnis dieser Technologie zu erhalten. Ich hoffe, es könnte hilfreich sein.