Udostępnij przez


Wdrażanie usługi roboczej na Azure

W tym artykule dowiesz się, jak wdrożyć usługę roboczą .NET do Azure. Gdy proces roboczy działa jako wystąpienie kontenera platformy Azure (ACI) z Azure Container Registry (ACR), może funkcjonować jako mikrousługa w chmurze. Istnieje wiele zastosowań dla długotrwałych usług, i z tego powodu istnieje usługa Worker Service.

W tym poradniku nauczysz się, jak:

  • Utwórz usługę roboczą.
  • Utwórz zasób rejestru kontenerów.
  • Wypchnij obraz do rejestru kontenerów.
  • Wdrożyć jako instancja kontenera.
  • Sprawdź funkcjonalność usługi roboczej.

Wskazówka

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, uruchom polecenie dotnet new i zastąp <Project.Name> odpowiednią nazwą projektu.

dotnet new worker --name <Project.Name>

Aby uzyskać więcej informacji na temat polecenia nowego projektu usługi roboczej w CLI platformy .NET, zobacz 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 dla nowego projektu usługi roboczej w .NET CLI, zobacz 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 .NET CLI, 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 Eksploratorze rozwiązań i 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.

Opcje pliku platformy Docker

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 wybór systemu operacyjnego 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 Worker .NET jako obrazu 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.

Używając interfejsu wiersza polecenia, plik Dockerfilenie jest tworzony. Skopiuj jego zawartość do nowego pliku o nazwie Dockerfile w katalogu głównym projektu.

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"]

Uwaga / Notatka

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 zbudować obraz Docker, silnik 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 udostępnianie woluminów jest włączone.

  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 Eksploratorze rozwiązań, a następnie wybierz polecenie 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 oznaczenie obrazu jako wprowadź appcloudservice:latest. Terminal danych wyjściowych Docker Task wyświetla informacje o postępie polecenia Docker build.

Uwaga / Notatka

Jeśli nie zostanie wyświetlony monit o tagowanie obrazu, istnieje możliwość, że program Visual Studio Code korzysta z pliku istniejącego 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ładową 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 .

Podczas działania polecenia docker build każdy wiersz w pliku Dockerfile jest przetwarzany jako etap instrukcji. To polecenie kompiluje obraz i tworzy lokalne repozytorium o nazwie appcloudservice wskazujące obraz.

Wskazówka

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 przez cały ten samouczek.

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 opcję Recenzja i utwórz.
  6. Po zakończeniu sprawdzania poprawności wybierz pozycję Utwórz.

Ważne

Aby można było używać tego rejestru kontenerów podczas tworzenia wystąpienia kontenera, należy włączyć użytkownika administratora. Wybierz pozycję Klucze dostępu i włącz użytkownika administratora.

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 Azure CLI.

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 Azure CLI, sesja może wchodzić w interakcje z zasobami zgodnie z uprawnieniami.

Jeśli nie masz jeszcze grupy zasobów, z którą chcesz skojarzyć usługę procesu roboczego, utwórz ją przy użyciu polecenia az group create.

az group create -n <resource group> -l <location>

<resource group> Podaj nazwę, oraz <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 rejestr kontenerów Azure Container Registry, podając nazwę rejestru, w określonej grupie zasobów.
  • Włączono użytkownika administratora — jest to wymagane w przypadku usługi Azure Container Instances.

Aby uzyskać więcej informacji, zobacz Szybki start: tworzenie rejestru kontenerów platformy Azure.

Przekazywanie obrazu do rejestru kontenerów

Po zbudowaniu obrazu platformy .NET na Dockerze i utworzeniu zasobu rejestru kontenerów można teraz przesłać obraz do rejestru kontenerów.

Kliknij prawym przyciskiem myszy projekt w Eksploratorze 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: okno dialogowe Publikowanie — wybieranie platformy Azure

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

Visual Studio: okno dialogowe Publikowanie — wybieranie rejestru kontenerów

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: okno dialogowe Publikowanie — wybieranie szczegółów rejestru kontenerów

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, okno Dane wyjściowe raportuje postęp publikacji – a gdy proces zakończy się pomyślnie, zobaczysz komunikat "Pomyślnie opublikowany".

Wybierz pozycję Docker na pasku działań w programie Visual Studio Code. Rozwiń panel drzewa widoku IMAGES, następnie rozwiń węzeł obrazu appcloudservice i kliknij prawym przyciskiem myszy na tagu latest.

Visual Studio Code: Docker — wypchnij obraz

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 .
  • Uruchamia polecenie docker build w zasobie rejestru kontenerów względem pliku Dockerfile.
  • Dodaje obraz do rejestru kontenerów.

Aby sprawdzić, czy obraz został pomyślnie przekazany do rejestru kontenerów, przejdź do portalu Azure. Otwórz zasób rejestru kontenerów w obszarze Usługi wybierz pozycję Repozytoria. Powinien zostać wyświetlony obraz.

Wdrażanie jako instancja kontenera

W programie Visual Studio Code wybierz pozycję Docker na pasku działań. Rozwiń węzeł REJESTRY , a następnie wybierz pozycję Połącz 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: Łączenie rejestru

Rozwiń węzeł REJESTRY, wybierz Azure, swoją subskrypcję >, rejestr kontenerów, obraz, a następnie kliknij prawym przyciskiem myszy tag. Wybierz opcję Wdrażanie obrazu do Azure Container Instances.

Visual Studio Code — Docker: wdrażanie obrazu 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, > zasobów usługi Container Registry.

Aby utworzyć instancję kontenera, należy również utworzyć nowy zasób w portalu Azure.

  1. Wybierz tę samą subskrypcję i odpowiednią grupę zasobów z poprzedniej sekcji.
  2. Wprowadź nazwę konteneraappcloudservice-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 Obraz i tag Obraz.
  7. Wybierz opcję Recenzja i utwórz.
  8. Jeśli weryfikacja zakończyła się powodzeniem, wybierz Utwórz.

Utworzenie zasobów może potrwać chwilę. Po ich utworzeniu wybierz przycisk Przejdź do zasobu.

Aby uzyskać więcej informacji, zobacz Szybki Start: Tworzenie wystąpienia kontenera Azure.

Weryfikowanie funkcjonalności usługi

Natychmiast po utworzeniu wystąpienia kontenera, rozpoczyna ono działanie.

Aby sprawdzić, czy usługa procesu roboczego działa prawidłowo, przejdź do portalu Azure dla zasobu wystąpienia kontenera i wybierz opcję Kontenery.

Portal Azure: instancja kontenera w trakcie działania

Zobaczysz kontenery i ich bieżący stan. W tym przypadku jest uruchomione. Wybierz Dzienniki, aby zobaczyć wyniki działania usługi worker .NET.

Aby sprawdzić, czy usługa procesu roboczego działa prawidłowo, możesz wyświetlić dzienniki z uruchomionej aplikacji. Użyj polecenia az container logs:

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 roboczej platformy .NET, co oznacza, że aplikacja konteneryzowana została pomyślnie wdrożona na ACI.

Zobacz także