Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie einen .NET Worker Service in Azure bereitstellen. Wenn Ihr Worker als Azure Container Instance (ACI) aus der Azure Container Registry (ACR) ausgeführt wird, kann er als Microservice in der Cloud fungieren. Es gibt viele Anwendungsfälle für lang laufende Dienste, und der Worker Service existiert aus diesem Grund.
In diesem Tutorial erfahren Sie, wie:
- Erstellen Sie einen Arbeitsdienst.
- Erstellen Sie die Ressource für Container-Registrierungen.
- Übertragen Sie ein Image in die Container-Registrierung.
- Als Containerinstanz bereitstellen.
- Überprüfen Sie die Funktionalität des Worker-Dienstes.
Tipp
Der Quellcode "Workers in .NET" ist im Beispielbrowser zum Herunterladen verfügbar. Weitere Informationen finden Sie unter Durchsuchen von Codebeispielen: Worker in .NET.
Voraussetzungen
- Das .NET 5.0 SDK oder höher.
- Docker Desktop (Windows oder Mac).
- Ein Azure-Konto mit einem aktiven Abonnement. Kostenlos ein Konto erstellen.
- Abhängig von Ihrer Entwicklerumgebung:
Erstellen eines neuen Projekts
Um ein neues Worker Service-Projekt mit Visual Studio zu erstellen, wählen Sie Datei>Neu>Projekt erstellen.... Suchen Sie im Dialogfenster Neues Projekt erstellen nach "Worker Service", und wählen Sie die "Worker Service"-Vorlage aus. Geben Sie den gewünschten Projektnamen ein, wählen Sie einen geeigneten Speicherort aus, und wählen Sie "Weiter" aus. Aktivieren Sie auf der Seite Zusätzliche Informationen für das Zielframework die Auswahl .NET 5.0, und wählen Sie die Option Docker aktivieren, um die Docker-Unterstützung zu aktivieren. Wählen Sie das gewünschte Docker-Betriebssystem aus.
Um ein neues Worker Service-Projekt mit Visual Studio Code zu erstellen, können Sie .NET CLI-Befehle über das integrierte Terminal ausführen. Weitere Informationen finden Sie unter Visual Studio Code: Integrated Terminal.
Öffnen Sie das integrierte Terminal, und führen Sie den dotnet new Befehl aus, und ersetzen Sie <Project.Name> durch den gewünschten Projektnamen.
dotnet new worker --name <Project.Name>
Weitere Informationen zum .NET CLI-Projektbefehl für den neuen Workerdienst finden Sie unter dotnet new worker.
Um ein neues Worker Service-Projekt mit der .NET CLI zu erstellen, öffnen Sie Ihr bevorzugtes Terminal in einem Arbeitsverzeichnis. Führen Sie den dotnet new Befehl aus, und ersetzen Sie <Project.Name> durch den gewünschten Projektnamen.
dotnet new worker --name <Project.Name>
Weitere Informationen zum .NET CLI-Befehl für ein neues Worker-Dienstprojekt finden Sie unter dotnet new worker.
Bauen Sie die Anwendung, um sicherzustellen, dass die abhängigen Pakete wiederhergestellt werden und sie ohne Fehler kompiliert wird.
Um die Anwendung in Visual Studio zu erstellen, drücken Sie F6 oder wählen Sie die Menüoption "Projektmappe erstellen" aus.
Um die Anwendung aus Visual Studio Code zu erstellen, öffnen Sie das integrierte Terminalfenster, und führen Sie den dotnet build Befehl aus dem Arbeitsverzeichnis aus.
dotnet build
Weitere Informationen zum .NET CLI-Buildbefehl finden Sie unter dotnet build.
Um die Anwendung über die .NET CLI zu erstellen, führen Sie den dotnet build Befehl aus dem Arbeitsverzeichnis aus.
dotnet build <path/to/project.csproj>
Geben Sie Ihren <path/to/project.csproj> Wert an, bei dem es sich um den Pfad zur zu erstellenden Projektdatei handelt. Weitere Informationen zum .NET CLI-Buildbefehl finden Sie unter dotnet build.
Hinzufügen der Docker-Unterstützung
Wenn Sie das Kontrollkästchen "Docker aktivieren" beim Erstellen eines neuen Workerprojekts ordnungsgemäß aktiviert haben, fahren Sie mit dem Schritt " Erstellen des Docker-Images " fort.
Wenn Sie diese Option nicht ausgewählt haben, machen Sie sich keine Sorgen – Sie können sie jetzt noch hinzufügen. Klicken Sie in Visual Studio im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten, und wählen Sie"Docker-Support> aus. Sie werden aufgefordert, ein Zielbetriebssystem auszuwählen. wählen Sie "OK " mit der Standardmäßigen Betriebssystemauswahl aus.
In Visual Studio Code benötigen Sie die Docker-Erweiterung und die Azure-Kontoerweiterung installiert. Öffnen Sie die Befehlspalette, und wählen Sie die Option "Docker: Docker-Dateien zum Arbeitsbereich hinzufügen " aus. Wenn Sie zur Auswahl der Anwendungsplattform aufgefordert werden, wählen Sie .NET: Core Console aus. Wenn Sie aufgefordert werden, Projekt auszuwählen, wählen Sie das von Ihnen erstellte Worker Service-Projekt aus. Wenn Sie zum Auswählen des Betriebssystems aufgefordert werden, wählen Sie das erste aufgelistete Betriebssystem aus. Wenn Sie gefragt werden, ob optionale Docker Compose-Dateien eingeschlossen werden sollen, wählen Sie "Nein" aus.
Für die Docker-Unterstützung ist eine Dockerfile erforderlich. Diese Datei ist eine Reihe umfassender Anweisungen zum Erstellen Ihres .NET Worker Service als Docker-Image. Die Dockerfile-Datei ist eine Datei ohne Dateierweiterung. Der folgende Code ist ein Beispiel für Dockerfile und sollte im Stammverzeichnis der Projektdatei vorhanden sein.
Mit der CLI wird die Dockerfile-Dateinicht für Sie erstellt. Kopieren Sie den Inhalt in eine neue Datei namens Dockerfile im Stammverzeichnis des Projekts.
FROM mcr.microsoft.com/dotnet/runtime:8.0@sha256:e6b552fd7a0302e4db30661b16537f7efcdc0b67790a47dbf67a5e798582d3a5 AS base
WORKDIR /app
# Creates a non-root user with an explicit UID and adds permission to access the /app folder
# For more info, please refer to https://aka.ms/vscode-docker-dotnet-configure-containers
RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app
USER appuser
FROM mcr.microsoft.com/dotnet/sdk:8.0@sha256:35792ea4ad1db051981f62b313f1be3b46b1f45cadbaa3c288cd0d3056eefb83 AS build
WORKDIR /src
COPY ["App.CloudService.csproj", "./"]
RUN dotnet restore "App.CloudService.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "App.CloudService.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "App.CloudService.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "App.CloudService.dll"]
Hinweis
Sie müssen die verschiedenen Zeilen in der Dockerfile-Datei aktualisieren, die auf *App.CloudService verweisen. Ersetzen Sie dies durch den Namen Ihres Projekts.
Weitere Informationen zu den offiziellen .NET-Images finden Sie unter Docker Hub: .NET Runtime und Docker Hub: .NET SDK.
Erstellen des Docker-Images
Um das Docker-Image zu erstellen, muss das Docker-Modul ausgeführt werden.
Von Bedeutung
Wenn Sie Docker Desktop und Visual Studio verwenden, stellen Sie sicher, dass die Volumefreigabe aktiviert ist, um Fehler im Zusammenhang mit der Volumefreigabe zu vermeiden.
- Wählen Sie auf dem Bildschirm "Einstellungen" in Docker Desktop "Freigegebene Laufwerke" aus.
- Wählen Sie die Laufwerke aus, die Ihre Projektdateien enthalten.
Weitere Informationen finden Sie unter Problembehandlung bei der Visual Studio-Entwicklung mit Docker.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Dockerfile-Datei, und wählen Sie "Docker Image erstellen" aus. Das Ausgabefenster wird angezeigt und meldet den docker build Befehlsfortschritt.
Klicken Sie im Explorer mit der rechten Maustaste auf die Dockerfile-Datei, und wählen Sie "Image erstellen" aus. Wenn Sie zum Tag-Bild aufgefordert werden, geben Sie folgendes ein appcloudservice:latest. Das Docker Task-Ausgabeterminal wird angezeigt und meldet den Fortschritt des Docker-Buildbefehls.
Hinweis
Wenn Sie nicht aufgefordert werden, das Bild zu kategorisieren, ist es möglich, dass Visual Studio Code auf eine vorhandene tasks.jsonbasiert. Wenn das verwendete Tag nicht erwünscht ist, können Sie es ändern, indem Sie den Wert des docker-build Konfigurationselements dockerBuild/tag im tasks Array aktualisieren. Betrachten Sie den folgenden Beispielkonfigurationsabschnitt:
{
"type": "docker-build",
"label": "docker-build: release",
"dependsOn": [
"build"
],
"dockerBuild": {
"tag": "appcloudservice:latest",
"dockerfile": "${workspaceFolder}/cloud-service/Dockerfile",
"context": "${workspaceFolder}",
"pull": true
},
"netCore": {
"appProject": "${workspaceFolder}/cloud-service/App.CloudService.csproj"
}
}
Öffnen Sie ein Terminalfenster im Stammverzeichnis der Dockerfile-Datei, und führen Sie den folgenden Docker-Befehl aus:
docker build -t appcloudservice:latest -f Dockerfile .
Wenn der docker build Befehl ausgeführt wird, verarbeitet er jede Zeile in der Dockerfile-Datei als Anweisungsschritt. Mit diesem Befehl wird das Image erstellt und ein lokales Repository namens "appcloudservice " erstellt, das auf das Bild verweist.
Tipp
Die generierte Dockerfile unterscheidet sich zwischen Entwicklungsumgebungen. Wenn Sie beispielsweise die Docker-Unterstützung von Visual Studio hinzufügen, treten möglicherweise Probleme auf, wenn Sie versuchen, das Docker-Image aus Visual Studio Code zu erstellen – da die Dockerfile-Schritte variieren. Es empfiehlt sich, eine einzelne Entwicklungsumgebung auszuwählen und in diesem Lernprogramm zu verwenden.
Erstellen der Containerregistrierung
Mit einer Azure Container Registry (ACR)-Ressource können Sie Containerimages und Artefakte in einer privaten Registrierung erstellen, speichern und verwalten. Zum Erstellen einer Containerregistrierung müssen Sie eine neue Ressource im Azure-Portal erstellen.
- Wählen Sie das Abonnement und die entsprechende Ressourcengruppe aus (oder erstellen Sie eine neue).
- Geben Sie einen Registrierungsnamen ein.
- Wählen Sie einen Ort aus.
- Wählen Sie eine entsprechende SKU aus, z. B. "Einfach".
- Klicken Sie auf Überprüfen + erstellen.
- Nachdem die Überprüfung bestanden wurde, wählen Sie "Erstellen" aus.
Von Bedeutung
Um diese Containerregistrierung beim Erstellen einer Containerinstanz zu verwenden, müssen Sie den Administratorbenutzer aktivieren. Wählen Sie Zugriffstasten aus, und aktivieren Sie den Administratorbenutzer.
Mit einer Azure Container Registry (ACR)-Ressource können Sie Containerimages und Artefakte in einer privaten Registrierung erstellen, speichern und verwalten. Öffnen Sie ein Terminalfenster im Stammverzeichnis der Dockerfile-Datei, und führen Sie den folgenden Azure CLI-Befehl aus:
Von Bedeutung
Um mit Azure-Ressourcen über die Azure CLI zu interagieren, müssen Sie für Ihre Terminalsitzung authentifiziert werden. Verwenden Sie zum Authentifizieren den az login Befehl:
az login
Nachdem Sie angemeldet sind, verwenden Sie den az account set Befehl, um Ihr Abonnement anzugeben, wenn sie mehrere und keine Standardabonnements festgelegt haben.
az account set --subscription <subscription name or id>
Sobald Sie sich bei der Azure CLI anmelden, kann Ihre Sitzung entsprechend mit Ressourcen interagieren.
Wenn Sie noch nicht über eine Ressourcengruppe verfügen, der Sie Ihren Arbeitsdienst zuordnen möchten, erstellen Sie eine mit dem az group create Befehl:
az group create -n <resource group> -l <location>
Geben Sie den <resource group> Namen und die <location>. Rufen Sie den az acr create Befehl auf, um eine Containerregistrierung zu erstellen.
az acr create -n <registry name> -g <resource group> --sku <sku> --admin-enabled true
Ersetzen Sie Platzhalter durch ihre eigenen geeigneten Werte:
-
<registry name>: der Name der Registrierung. -
<resource group>: der verwendete Ressourcengruppenname. -
<sku>: akzeptierte Werte, Basic, Classic, Premium oder Standard.
Der vorherige Befehl:
- Erstellt eine Azure-Containerregistrierung, die einem Registrierungsnamen in der angegebenen Ressourcengruppe zugeordnet ist.
- Ein Administratorbenutzer aktiviert – dies ist für Azure-Containerinstanzen erforderlich.
Weitere Informationen finden Sie in der Schnellstartanleitung: Erstellen einer Azure-Containerregistrierung.
Bild in die Containerregistrierung übertragen
Nachdem das .NET Docker-Image erstellt wurde und die Containerregistrierungsressource erstellt wurde, können Sie das Image jetzt in die Containerregistrierung übertragen.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie "Veröffentlichen" aus. Das Dialogfeld " Veröffentlichen " wird angezeigt. Wählen Sie für das ZielAzure und dann "Weiter" aus.
Wählen Sie für das spezifische Zieldie Azure-Containerregistrierung und dann "Weiter" aus.
Wählen Sie als Nächstes für die Containerregistrierung den Namen des Abonnements aus, den Sie zum Erstellen der ACR-Ressource verwendet haben. Wählen Sie im Auswahlbereich "Containerregistrierungen " die von Ihnen erstellte Containerregistrierung und dann " Fertig stellen" aus.
Dadurch wird ein Veröffentlichungsprofil erstellt, mit dem das Image in der Containerregistrierung veröffentlicht werden kann. Wählen Sie die Schaltfläche " Veröffentlichen " aus, um das Image in die Containerregistrierung zu übertragen, das Ausgabefenster meldet den Veröffentlichungsfortschritt. Wenn es erfolgreich abgeschlossen ist, wird eine Meldung "Erfolgreich veröffentlicht" angezeigt.
Wählen Sie Docker aus der Aktivitätsleiste in Visual Studio Code aus. Erweitern Sie den Baumbereich der Bilder, erweitern Sie dann den appcloudservice Bildknoten, und klicken Sie mit der rechten Maustaste auf das latest Tag.
Das integrierte Terminalfenster meldet den Fortschritt des docker push Befehls an die Containerregistrierung.
Um ein Image an die Containerregistrierung zu übertragen, müssen Sie sich zuerst bei der Registrierung anmelden:
az acr login -n <registry name>
Der az acr login Befehl meldet sich über die Docker CLI bei einer Container-Registry an. Um das Image an die Containerregistrierung zu übertragen, verwenden Sie den Befehl az acr build zusammen mit dem Namen Ihrer Containerregistrierung:<registry name>
az acr build -r <registry name> -t appcloudservice .
Der vorherige Befehl:
- Packt die Quelle in eine Tar-Datei .
- Lädt sie in die Containerregistrierung hoch.
- Die Containerregistrierung entpackt die Tar-Datei .
- Führt den
docker buildBefehl in der Container-Registry-Ressource gegen die Dockerfile aus. - Fügt das Image zur Containerregistrierung hinzu.
Um zu überprüfen, ob das Image erfolgreich an die Containerregistrierung übertragen wurde, navigieren Sie zum Azure-Portal. Öffnen Sie die Containerregistrierungsressource unter "Dienste", und wählen Sie "Repositorys" aus. Du solltest das Bild sehen.
Bereitstellen als Containerinstanz
Wählen Sie in Visual Studio Code Docker aus der Aktivitätsleiste aus. Erweitern Sie den Knoten REGISTRIES, und wählen Sie Connect Registry aus. Wählen Sie Azure aus, wenn Sie dazu aufgefordert werden, und melden Sie sich bei Bedarf an.
Von Bedeutung
Die Bereitstellung als Containerinstanz aus Visual Studio Code funktioniert nicht mehr auf dem Mac. Weitere Informationen finden Sie unter GitHub: Informationen zur Docker-Erweiterung für Visual Studio Code.
Erweitern Sie den Knoten REGISTRIES, wählen Sie Azure, Ihr Abonnement >, die Containerregistrierung >, das Image, und klicken Sie dann mit der rechten Maustaste auf das Tag. Wählen Sie "Image für Azure-Containerinstanzen bereitstellen" aus.
Um eine Containerinstanz zu erstellen, erstellen Sie zunächst eine Containergruppe mit dem az container create Befehl.
az container create -g <resource group> \
--name <instance name> \
--image <registry name>.azurecr.io/<image name>:latest \
--registry-password <password>
Geben Sie die entsprechenden Werte an:
-
<resource group>: der Name der Ressourcengruppe, den Sie in diesem Tutorial verwendet haben. -
<instance name>: der Name der Containerinstanz. -
<registry name>: der Name der Containerregistrierung. -
<image name>: der Name des Bilds. -
<password>: das Kennwort für die Containerregistrierung – Sie können dies über das Azure-Portal, Containerregistrierungsressourcenzugriffsschlüssel > abrufen.
Um eine Containerinstanz zu erstellen, müssen Sie auch eine neue Ressource im Azure-Portal erstellen.
- Wählen Sie dasselbe Abonnement und die entsprechende Ressourcengruppe aus dem vorherigen Abschnitt aus.
- Geben Sie einen Containernamen
appcloudservice-containerein. - Wählen Sie eine Region aus, die der vorherigen Ort-Auswahl entspricht.
- Wählen Sie für die Bildquelleazure Container Registry aus.
- Wählen Sie die Registrierung anhand des im vorherigen Schritt angegebenen Namens aus.
- Wählen Sie das Bild und das Bild-Tag aus.
- Klicken Sie auf Überprüfen + erstellen.
- Wählen Sie bei erfolgreicher Validierung die Option Erstellen aus.
Es kann einen Moment dauern, bis die Ressourcen erstellt werden, sobald sie erstellt wurden, die Schaltfläche "Gehe zu Ressource " auswählen.
Weitere Informationen finden Sie in der Schnellstartanleitung: Erstellen einer Azure-Containerinstanz.
Überprüfen der Dienstfunktionalität
Unmittelbar nach dem Erstellen der Containerinstanz wird sie gestartet.
Um zu überprüfen, ob der Workerdienst ordnungsgemäß funktioniert, navigieren Sie zum Azure-Portal in der Containerinstanzressource und wählen Sie die Container Option aus.
Die Container und deren aktueller Status werden angezeigt. In diesem Fall ist es ausgeführt. Wählen Sie Logs aus, um die Ausgabe des .NET Worker-Service anzuzeigen.
Um zu überprüfen, ob der Workerdienst ordnungsgemäß funktioniert, können Sie die Protokolle aus Ihrer ausgeführten Anwendung anzeigen. Verwenden Sie den Befehl az container logs:
az container logs -g <resource group> --name <instance name>
Geben Sie die entsprechenden Werte an:
-
<resource group>: der Name der Ressourcengruppe, den Sie in diesem Tutorial verwendet haben. -
<instance name>: der Name der Containerinstanz.
Die Ausgabeprotokolle des .NET-Workerdiensts werden angezeigt, was bedeutet, dass Sie Ihre containerisierte App erfolgreich in ACI bereitgestellt haben.