Wdrażanie usługi procesu roboczego na platformie Azure
W tym artykule dowiesz się, jak wdrożyć usługę procesu roboczego platformy .NET na platformie Azure. Gdy proces roboczy działa jako wystąpienie kontenera platformy Azure (ACI) z usługi Azure Container Registry (ACR), może pełnić rolę mikrousługi w chmurze. Istnieje wiele przypadków użycia długotrwałych usług, a z tego powodu usługa procesu roboczego istnieje.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Utwórz usługę procesu roboczego.
- Utwórz zasób rejestru kontenerów.
- Wypychanie obrazu do rejestru kontenerów.
- Wdróż jako wystąpienie kontenera.
- Sprawdź funkcjonalność usługi procesu roboczego.
Napiwek
Cały przykładowy kod źródłowy "Pracownicy na platformie .NET" jest dostępny w przeglądarce Samples Browser do pobrania. Aby uzyskać więcej informacji, zobacz Przeglądanie przykładów kodu: Procesy robocze na platformie .NET.
Wymagania wstępne
- Zestaw .NET 5.0 SDK lub nowszy.
- Docker Desktop (Windows lub Mac).
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- W zależności od wybranego środowiska deweloperskiego:
Tworzenie nowego projektu
Aby utworzyć nowy projekt usługi roboczej za pomocą programu Visual Studio, wybierz pozycję Plik>nowy>projekt....W oknie dialogowym Tworzenie nowego projektu wyszukaj frazę "Usługa procesu roboczego" i wybierz szablon Usługa procesu roboczego. Wprowadź żądaną nazwę projektu, wybierz odpowiednią lokalizację, a następnie wybierz pozycję Dalej. Na stronie Dodatkowe informacje w polu Platforma docelowa wybierz pozycję .NET 5.0
, a następnie zaznacz opcję Włącz platformę Docker, aby włączyć obsługę platformy Docker. Wybierz żądany system operacyjny Platformy Docker.
Aby utworzyć nowy projekt usługi roboczej za pomocą programu Visual Studio Code, możesz uruchomić polecenia interfejsu wiersza polecenia platformy .NET z poziomu zintegrowanego terminalu. Aby uzyskać więcej informacji, zobacz Visual Studio Code: Zintegrowany terminal.
Otwórz zintegrowany terminal i uruchom dotnet new
polecenie i zastąp <Project.Name>
element odpowiednią nazwą projektu.
dotnet new worker --name <Project.Name>
Aby uzyskać więcej informacji na temat polecenia nowego projektu usługi roboczej interfejsu wiersza polecenia platformy .NET, zobacz dotnet new worker (dotnet new worker).
Aby utworzyć nowy projekt usługi Roboczej przy użyciu interfejsu wiersza polecenia platformy .NET, otwórz swój ulubiony terminal w katalogu roboczym. dotnet new
Uruchom polecenie i zastąp element <Project.Name>
odpowiednią nazwą projektu.
dotnet new worker --name <Project.Name>
Aby uzyskać więcej informacji na temat polecenia nowego projektu usługi roboczej interfejsu wiersza polecenia platformy .NET, zobacz dotnet new worker (dotnet new worker).
Skompiluj aplikację, aby upewnić się, że przywraca pakiety zależne i kompiluje się bez błędów.
Aby skompilować aplikację z poziomu programu Visual Studio, wybierz pozycję F6 lub wybierz opcję menu Kompiluj> rozwiązanie kompilacji.
Aby skompilować aplikację z poziomu programu Visual Studio Code, otwórz zintegrowane okno terminalu i uruchom dotnet build
polecenie z katalogu roboczego.
dotnet build
Aby uzyskać więcej informacji na temat polecenia kompilacji interfejsu wiersza polecenia platformy .NET, zobacz dotnet build
.
Aby skompilować aplikację z poziomu interfejsu wiersza polecenia platformy .NET, uruchom dotnet build
polecenie z katalogu roboczego.
dotnet build <path/to/project.csproj>
Określ wartość <path/to/project.csproj>
, która jest ścieżką do pliku projektu do skompilowania. Aby uzyskać więcej informacji na temat polecenia kompilacji interfejsu wiersza polecenia platformy .NET, zobacz dotnet build
.
Dodawanie obsługi platformy Docker
Jeśli podczas tworzenia nowego projektu Worker wybrano poprawnie pole wyboru Włącz platformę Docker , przejdź do kroku Kompilowanie obrazu platformy Docker.
Jeśli ta opcja nie została wybrana, nie martw się — możesz ją dodać teraz. W programie Visual Studio kliknij prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań, a następnie wybierz pozycję Dodaj>obsługę platformy Docker. Zostanie wyświetlony monit o wybranie docelowego systemu operacyjnego. Wybierz przycisk OK z domyślnym wyborem systemu operacyjnego.
W programie Visual Studio Code potrzebne jest rozszerzenie platformy Docker i rozszerzenie konta platformy Azure. Otwórz paletę poleceń i wybierz opcję Docker: Dodaj pliki platformy Docker do obszaru roboczego . Jeśli zostanie wyświetlony monit o wybranie platformy aplikacji, wybierz pozycję .NET: Konsola Core. Jeśli zostanie wyświetlony monit o wybranie projektu, wybierz utworzony projekt Usługi roboczej. Po wyświetleniu monitu o wybranie pozycji Wybierz system operacyjny wybierz pierwszy na liście system operacyjny. Po wyświetleniu monitu o dołączenie opcjonalnych plików narzędzia Docker Compose wybierz pozycję Nie.
Obsługa platformy Docker wymaga pliku Dockerfile. Ten plik to zestaw kompleksowych instrukcji dotyczących tworzenia usługi procesu roboczego platformy .NET jako obrazu platformy Docker. Plik Dockerfile jest plikiem bez rozszerzenia pliku. Poniższy kod jest przykładem pliku Dockerfile i powinien istnieć w katalogu głównym pliku projektu.
Za pomocą interfejsu wiersza polecenia plik Dockerfile nie jest tworzony. Skopiuj jego zawartość do nowego pliku o nazwie Dockerfile w katalogu głównym projektu.
FROM mcr.microsoft.com/dotnet/runtime:8.0 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 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"]
Uwaga
Musisz zaktualizować różne wiersze w pliku Dockerfile odwołujące się do pliku *App.CloudService — zastąp go nazwą projektu.
Aby uzyskać więcej informacji na temat oficjalnych obrazów platformy .NET, zobacz Docker Hub: .NET Runtime i Docker Hub: .NET SDK.
Budowanie obrazu Docker
Aby skompilować obraz platformy Docker, aparat platformy Docker musi być uruchomiony.
Ważne
W przypadku korzystania z programu Docker Desktop i programu Visual Studio, aby uniknąć błędów związanych z udostępnianiem woluminów — upewnij się, że jest on włączony.
- Na ekranie Ustawienia w programie Docker Desktop wybierz pozycję Dyski udostępnione.
- Wybierz dyski zawierające pliki projektu.
Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z programowaniem w programie Visual Studio za pomocą platformy Docker.
Kliknij prawym przyciskiem myszy plik Dockerfile w Eksplorator rozwiązań, a następnie wybierz pozycję Kompiluj obraz platformy Docker. Zostanie wyświetlone okno Dane wyjściowe z raportem o postępie docker build
polecenia.
Kliknij prawym przyciskiem myszy plik Dockerfile w Eksploratorze, a następnie wybierz pozycję Kompiluj obraz. Po wyświetleniu monitu o tagowanie obrazu jako wprowadź .appcloudservice:latest
W terminalu danych wyjściowych zadania platformy Docker zostanie wyświetlony komunikat informujący o postępie polecenia kompilacji platformy Docker.
Uwaga
Jeśli nie zostanie wyświetlony monit o tagowanie obrazu, możliwe, że program Visual Studio Code korzysta z istniejącego pliku tasks.json. Jeśli używany tag jest niepożądany, możesz go zmienić, aktualizując docker-build
wartość elementu dockerBuild/tag
konfiguracji w tablicy tasks
. Rozważmy następującą przykładowy sekcję konfiguracji:
{
"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"
}
}
Otwórz okno terminalu w katalogu głównym pliku Dockerfile i uruchom następujące polecenie platformy Docker:
docker build -t appcloudservice:latest -f Dockerfile .
Po uruchomieniu docker build
polecenia przetwarza każdy wiersz w pliku Dockerfile jako krok instrukcji. To polecenie kompiluje obraz i tworzy lokalne repozytorium o nazwie appcloudservice wskazujące obraz.
Napiwek
Wygenerowany plik Dockerfile różni się między środowiskami projektowymi. Jeśli na przykład dodasz obsługę platformy Docker z poziomu programu Visual Studio, możesz napotkać problemy w przypadku próby skompilowania obrazu platformy Docker z programu Visual Studio Code, ponieważ kroki pliku Dockerfile różnią się. Najlepiej wybrać pojedyncze środowisko programistyczne i używać go w tym samouczku.
Tworzenie rejestru kontenerów
Zasób usługi Azure Container Registry (ACR) umożliwia tworzenie i przechowywanie obrazów kontenerów oraz artefaktów oraz zarządzanie nimi w rejestrze prywatnym. Aby utworzyć rejestr kontenerów, musisz utworzyć nowy zasób w witrynie Azure Portal.
- Wybierz subskrypcję i odpowiednią grupę zasobów (lub utwórz nową).
- Wprowadź nazwę rejestru.
- Wybierz lokalizację.
- Wybierz odpowiednią jednostkę SKU, na przykład Podstawowa.
- Wybierz pozycję Przejrzyj i utwórz.
- Po zakończeniu sprawdzania poprawności wybierz pozycję Utwórz.
Ważne
Aby użyć tego rejestru kontenerów podczas tworzenia wystąpienia kontenera, należy włączyć Administracja użytkownika. Wybierz pozycję Klucze dostępu i włącz Administracja użytkownika.
Zasób usługi Azure Container Registry (ACR) umożliwia tworzenie i przechowywanie obrazów kontenerów oraz artefaktów oraz zarządzanie nimi w rejestrze prywatnym. Otwórz okno terminalu w katalogu głównym pliku Dockerfile i uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure:
Ważne
Aby korzystać z zasobów platformy Azure z poziomu interfejsu wiersza polecenia platformy Azure, należy uwierzytelnić się w sesji terminalu. Aby przeprowadzić uwierzytelnianie, użyj az login
polecenia :
az login
Po zalogowaniu az account set
użyj polecenia , aby określić subskrypcję, jeśli masz więcej niż jedną i nie ustawiono domyślnej subskrypcji.
az account set --subscription <subscription name or id>
Po zalogowaniu się do interfejsu wiersza polecenia platformy Azure sesja może odpowiednio wchodzić w interakcje z zasobami.
Jeśli nie masz jeszcze grupy zasobów, z którą chcesz skojarzyć usługę procesu roboczego, utwórz grupę przy użyciu az group create
polecenia :
az group create -n <resource group> -l <location>
<resource group>
Podaj nazwę i .<location>
Aby utworzyć rejestr kontenerów, wywołaj az acr create
polecenie .
az acr create -n <registry name> -g <resource group> --sku <sku> --admin-enabled true
Zastąp symbole zastępcze własnymi odpowiednimi wartościami:
<registry name>
: nazwa rejestru.<resource group>
: użyta nazwa grupy zasobów.<sku>
: akceptowane wartości, Podstawowa, Klasyczna, Premium lub Standardowa.
Poprzednie polecenie:
- Tworzy usługę Azure Container Registry o nazwie rejestru w określonej grupie zasobów.
- Włączono użytkownika Administracja — jest to wymagane w przypadku usługi Azure Container Instances.
Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie rejestru kontenerów platformy Azure.
Wypychanie obrazu do rejestru kontenerów
Po skompilowania obrazu platformy Docker platformy .NET i utworzonego zasobu rejestru kontenerów można teraz wypchnąć obraz do rejestru kontenerów.
Kliknij prawym przyciskiem myszy projekt w Eksplorator rozwiązań, a następnie wybierz pozycję Publikuj. Zostanie wyświetlone okno dialogowe Publikowanie . W polu Cel wybierz pozycję Azure , a następnie pozycję Dalej.
W polu Określony element docelowy wybierz pozycję Azure Container Registry, a następnie pozycję Dalej.
Następnie w polu Container Registry wybierz nazwę subskrypcji użytą do utworzenia zasobu usługi ACR. W obszarze wyboru Rejestry kontenerów wybierz utworzony rejestr kontenerów, a następnie wybierz pozycję Zakończ.
Spowoduje to utworzenie profilu publikowania, który może służyć do publikowania obrazu w rejestrze kontenerów. Wybierz przycisk Publikuj, aby wypchnąć obraz do rejestru kontenerów, w oknie Dane wyjściowe zostanie wyświetlony komunikat "Pomyślnie opublikowany".
Wybierz pozycję Docker na pasku działań w programie Visual Studio Code. Rozwiń panel widok drzewa IMAGES, a następnie rozwiń appcloudservice
węzeł obrazu i kliknij prawym przyciskiem latest
myszy tag.
Zintegrowane okno terminalu docker push
zgłasza postęp polecenia w rejestrze kontenerów.
Aby wypchnąć obraz do rejestru kontenerów, musisz najpierw zalogować się do rejestru:
az acr login -n <registry name>
Polecenie az acr login
loguje się do rejestru kontenerów za pomocą interfejsu wiersza polecenia platformy Docker. Aby wypchnąć obraz do rejestru kontenerów, użyj polecenia az acr build z nazwą rejestru kontenerów jako :<registry name>
az acr build -r <registry name> -t appcloudservice .
Poprzednie polecenie:
- Pakuje źródło do pliku tar .
- Przekazuje go do rejestru kontenerów.
- Rejestr kontenerów rozpakuje plik tar .
docker build
Uruchamia polecenie w zasobie rejestru kontenerów względem pliku Dockerfile.- Dodaje obraz do rejestru kontenerów.
Aby sprawdzić, czy obraz został pomyślnie wypchnięty do rejestru kontenerów, przejdź do witryny Azure Portal. Otwórz zasób rejestru kontenerów w obszarze Usługi wybierz pozycję Repozytoria. Powinien zostać wyświetlony obraz.
Wdrażanie jako wystąpienie kontenera
W programie Visual Studio Code wybierz pozycję Docker na pasku działań. Rozwiń węzeł REJESTRY i wybierz pozycję Połączenie Rejestr. Po wyświetleniu monitu wybierz pozycję Azure i w razie potrzeby zaloguj się.
Ważne
Wdrażanie jako wystąpienie kontenera z programu Visual Studio Code nie działa już na komputerze Mac. Aby uzyskać więcej informacji, zobacz GitHub: About Docker Extension for Visual Studio Code (GitHub: Informacje o rozszerzeniu platformy Docker dla programu Visual Studio Code).
Rozwiń węzeł REJESTRY, wybierz pozycję Azure, subskrypcję > rejestru > kontenerów obraz, a następnie kliknij prawym przyciskiem myszy tag. Wybierz pozycję Wdróż obraz w usłudze Azure Container Instances.
Aby utworzyć wystąpienie kontenera, najpierw utwórz grupę kontenerów az container create
przy użyciu polecenia .
az container create -g <resource group> \
--name <instance name> \
--image <registry name>.azurecr.io/<image name>:latest \
--registry-password <password>
Podaj odpowiednie wartości:
<resource group>
: nazwa grupy zasobów, której używasz w tym samouczku.<instance name>
: nazwa wystąpienia kontenera.<registry name>
: nazwa rejestru kontenerów.<image name>
: nazwa obrazu.<password>
: hasło do rejestru kontenerów — można je pobrać z witryny Azure Portal, kluczy dostępu do zasobów >usługi Container Registry.
Aby utworzyć wystąpienie kontenera, należy również utworzyć nowy zasób w witrynie Azure Portal.
- Wybierz tę samą subskrypcję i odpowiednią grupę zasobów z poprzedniej sekcji.
- Wprowadź nazwę kontenera —
appcloudservice-container
. - Wybierz region odpowiadający poprzedniemu zaznaczeniu Lokalizacja.
- W polu Źródło obrazu wybierz pozycję Azure Container Registry.
- Wybierz rejestr według nazwy podanej w poprzednim kroku.
- Wybierz tag Obraz i Obraz.
- Wybierz pozycję Przejrzyj i utwórz.
- Przy założeniu, że weryfikacja została pomyślnie przekazana, wybierz pozycję Utwórz.
Utworzenie zasobów może potrwać chwilę, po utworzeniu przycisku Przejdź do zasobu .
Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie wystąpienia kontenera platformy Azure.
Weryfikowanie funkcjonalności usługi
Natychmiast po utworzeniu wystąpienia kontenera zostanie uruchomione.
Aby sprawdzić, czy usługa procesu roboczego działa prawidłowo, przejdź do witryny Azure Portal w zasobie wystąpienia kontenera , wybierz opcję Kontenery .
Zobaczysz kontenery i ich bieżący stan. W tym przypadku jest uruchomiona. Wybierz pozycję Dzienniki , aby wyświetlić dane wyjściowe usługi procesu roboczego platformy .NET.
Aby sprawdzić, czy usługa procesu roboczego działa prawidłowo, możesz wyświetlić dzienniki z uruchomionej aplikacji. az container logs
Użyj polecenia :
az container logs -g <resource group> --name <instance name>
Podaj odpowiednie wartości:
<resource group>
: nazwa grupy zasobów, której używasz w tym samouczku.<instance name>
: nazwa wystąpienia kontenera.
Zobaczysz dzienniki wyjściowe usługi procesu roboczego platformy .NET, co oznacza, że aplikacja konteneryzowana została pomyślnie wdrożona w usłudze ACI.