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

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.

Docker File Options

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.

  1. Na ekranie Ustawienia w programie Docker Desktop wybierz pozycję Dyski udostępnione.
  2. 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.

  1. Wybierz subskrypcję i odpowiednią grupę zasobów (lub utwórz nową).
  2. Wprowadź nazwę rejestru.
  3. Wybierz lokalizację.
  4. Wybierz odpowiednią jednostkę SKU, na przykład Podstawowa.
  5. Wybierz pozycję Przejrzyj i utwórz.
  6. 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.

Visual Studio: Publish dialog - select Azure

W polu Określony element docelowy wybierz pozycję Azure Container Registry, a następnie pozycję Dalej.

Visual Studio: Publish dialog - select container registry

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.

Visual Studio: Publish dialog - select container registry details

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.

Visual Studio Code: Docker - push image

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).

Visual Studio Code - Docker: Connect registry

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.

Visual Studio Code - Docker: Deploy image to 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.

  1. Wybierz tę samą subskrypcję i odpowiednią grupę zasobów z poprzedniej sekcji.
  2. Wprowadź nazwę kontenera appcloudservice-container .
  3. Wybierz region odpowiadający poprzedniemu zaznaczeniu Lokalizacja.
  4. W polu Źródło obrazu wybierz pozycję Azure Container Registry.
  5. Wybierz rejestr według nazwy podanej w poprzednim kroku.
  6. Wybierz tag Obraz i Obraz.
  7. Wybierz pozycję Przejrzyj i utwórz.
  8. 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 .

Azure portal: Container instance running

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.

Zobacz też