Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você aprenderá a implantar um Serviço de Trabalho do .NET no Azure. Com seu Worker em execução como uma Instância de Contêiner do Azure (ACI) do Registro de Contêiner do Azure (ACR), ele pode atuar como um microsserviço na nuvem. Há muitos casos de uso para serviços de execução longa e o Serviço de Trabalho existe por esse motivo.
Neste tutorial, você aprenderá como:
- Crie um serviço de trabalho.
- Criar recurso de registro de contêiner.
- Envie uma imagem para um registro de contêiner.
- Implantar como instância de contêiner.
- Verifique a funcionalidade do serviço de trabalho.
Dica
Todo o código-fonte de exemplo "Trabalhadores no .NET" está disponível no Navegador de Exemplos para download. Para obter mais informações, consulte Procurar exemplos de código: Trabalhos no .NET.
Pré-requisitos
- O SDK do .NET 5.0 ou posterior.
- Docker Desktop (Windows ou Mac).
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- Dependendo do ambiente de desenvolvedor de sua escolha:
Criar um novo projeto
Para criar um novo projeto do Serviço de Trabalho com o Visual Studio, selecione Arquivo>Novo>Projeto.... Na caixa de diálogo Criar um novo projeto , pesquise "Serviço de Trabalho" e selecione o modelo de Serviço de Trabalho. Insira o nome do projeto desejado, selecione um local apropriado e selecione Avançar. Na página Informações adicionais, selecione a .NET 5.0 e verifique a opção Habilitar Docker para habilitar o suporte do Docker. Selecione o sistema operacional docker desejado.
Para criar um novo projeto do Serviço de Trabalho com o Visual Studio Code, você pode executar comandos da CLI do .NET no terminal integrado. Para obter mais informações, consulte Visual Studio Code: Terminal Integrado.
Abra o terminal integrado, execute o comando dotnet new, e substitua <Project.Name> pelo nome do projeto desejado.
dotnet new worker --name <Project.Name>
Para obter mais informações sobre o novo comando de projeto de serviço de trabalho da CLI do .NET, consulte o novo trabalho do dotnet.
Para criar um novo projeto do Serviço de Trabalho com a CLI do .NET, abra seu terminal favorito em um diretório de trabalho. Execute o comando dotnet new e substitua <Project.Name> pelo nome do projeto que você deseja.
dotnet new worker --name <Project.Name>
Para obter mais informações sobre o comando de projeto do novo serviço de trabalho da CLI do .NET, consulte dotnet new worker.
Crie o aplicativo para garantir que ele restaure os pacotes dependentes e compile sem erros.
Para criar o aplicativo no Visual Studio, selecione F6 ou selecione a opção de menu Criar>Solução de Build .
Para criar o aplicativo do Visual Studio Code, abra a janela do terminal integrado e execute o dotnet build comando no diretório de trabalho.
dotnet build
Para obter mais informações sobre o comando de build da CLI do .NET, consulte dotnet build.
Para criar o aplicativo a partir da CLI do .NET, execute o dotnet build comando no diretório de trabalho.
dotnet build <path/to/project.csproj>
Especifique seu <path/to/project.csproj> valor, que é o caminho para o arquivo de projeto a ser compilado. Para obter mais informações sobre o comando de build da CLI do .NET, consulte dotnet build.
Adicionar suporte ao Docker
Se você tiver selecionado corretamente a caixa de seleção Habilitar Docker ao criar um novo projeto de Trabalho, pule para a etapa Criar a imagem do Docker .
Se você não selecionou essa opção, não se preocupe, ainda poderá adicioná-la agora. No Visual Studio, clique com o botão direito do mouse no nó do projeto no Gerenciador de Soluções e selecione Adicionar> Suporte aoDocker. Você será solicitado a selecionar um sistema operacional de destino; selecione OK com a seleção padrão do sistema operacional.
No Visual Studio Code, você precisa da extensão do Docker e da extensão da Conta do Azure instalada. Abra a Paleta de Comandos e selecione a opção Docker: Adicionar arquivos do Docker ao workspace . Se solicitado a selecionar a Plataforma de Aplicativos, escolha .NET: Console Core. Se solicitado a Selecionar Projeto, escolha o projeto do Serviço de Trabalho que você criou. Quando solicitado a Selecionar Sistema Operacional, escolha o primeiro sistema operacional listado. Quando solicitado se deseja ou não incluir arquivos opcionais do Docker Compose, selecioneNão.
O suporte do Docker requer um Dockerfile. Esse arquivo é um conjunto de instruções abrangentes para criar seu Serviço de Trabalho do .NET como uma imagem do Docker. O Dockerfile é um arquivo sem uma extensão de arquivo. O código a seguir é um exemplo de Dockerfile e deve existir no diretório raiz do arquivo de projeto.
Com a CLI, o Dockerfilenão será criado para você. Copie seu conteúdo em um novo arquivo chamado Dockerfile no diretório raiz do projeto.
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"]
Observação
Você precisa atualizar as várias linhas no Dockerfile que fazem referência a *App.CloudService– substitua-a pelo nome do seu projeto.
Para obter mais informações sobre as imagens oficiais do .NET, consulte o Hub do Docker: Runtime do .NET e o Hub do Docker: SDK do .NET.
Criar a imagem de Docker
Para criar a imagem do Docker, o Mecanismo do Docker deve estar em execução.
Importante
Ao usar o Docker Desktop e o Visual Studio, para evitar erros relacionados ao compartilhamento de volume, verifique se o compartilhamento de volume está habilitado.
- Na tela Configurações no Docker Desktop, selecione Unidades Compartilhadas.
- Selecione as unidades que contêm os arquivos do projeto.
Para obter mais informações, consulte Solucionar problemas de desenvolvimento do Visual Studio com o Docker.
Clique com o botão direito do mouse no Dockerfile no Gerenciador de Soluções e selecione Criar Imagem do Docker. A janela Saída é exibida, relatando o progresso do docker build comando.
Clique com o botão direito do mouse no Dockerfile no Explorer e selecione Criar Imagem. Quando solicitado a marcar a imagem como, insira appcloudservice:latest. O terminal de saída da Tarefa Docker mostra o progresso do comando de build do Docker.
Observação
Se você não for solicitado a marcar a imagem, é possível que o Visual Studio Code esteja contando com um tasks.jsonexistente. Se a tag utilizada for indesejável, você poderá alterá-la atualizando o valor de configuração do item docker-build na array tasks. Considere a seguinte seção de configuração de exemplo:
{
"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"
}
}
Abra uma janela de terminal no diretório raiz do Dockerfile e execute o seguinte comando docker:
docker build -t appcloudservice:latest -f Dockerfile .
À medida que o docker build comando é executado, ele processa cada linha no Dockerfile como uma etapa de instrução. Esse comando cria a imagem e cria um repositório local chamado appcloudservice que aponta para a imagem.
Dica
O Dockerfile gerado difere entre ambientes de desenvolvimento. Por exemplo, se você adicionar suporte ao Docker do Visual Studio, poderá enfrentar problemas se tentar criar a imagem do Docker do Visual Studio Code, pois as etapas do Dockerfile variam. É melhor escolher um único ambiente de desenvolvimento e usá-lo ao longo deste tutorial.
Criar um registro de contêiner
Um recurso do Registro de Contêiner do Azure (ACR) permite que você crie, armazene e gerencie imagens e artefatos de contêiner em um registro privado. Para criar um registro de contêiner, você precisa criar um novo recurso no portal do Azure.
- Selecione a Assinatura e o grupo de recursos correspondente (ou crie um novo).
- Insira um nome do Registro.
- Selecione um local.
- Selecione uma SKU apropriada, por exemplo, Basic.
- Selecione Examinar + criar.
- Depois de ver a Validação aprovada, selecione Criar.
Importante
Para usar esse registro de contêiner ao criar uma instância de contêiner, você deve habilitar o usuário administrador. Selecione chaves do Access e habilite o usuário administrador.
Um recurso do Registro de Contêiner do Azure (ACR) permite que você crie, armazene e gerencie imagens e artefatos de contêiner em um registro privado. Abra uma janela de terminal no diretório raiz do Dockerfile e execute o seguinte comando da CLI do Azure:
Importante
Para interagir com os recursos do Azure da CLI do Azure, você deve ser autenticado para sua sessão de terminal. Para autenticar, use o az login comando:
az login
Depois de fazer login, use o comando az account set para especificar sua assinatura quando você tiver mais de uma e nenhuma assinatura padrão estiver definida.
az account set --subscription <subscription name or id>
Depois de entrar na CLI do Azure, sua sessão poderá interagir com os recursos adequadamente.
Se você ainda não tiver um grupo de recursos ao qual gostaria de associar seu serviço de trabalho, crie um usando o az group create comando:
az group create -n <resource group> -l <location>
Forneça o <resource group> nome e o <location>. Para criar um registro de contêiner, chame o az acr create comando.
az acr create -n <registry name> -g <resource group> --sku <sku> --admin-enabled true
Substitua espaços reservados por seus próprios valores apropriados:
-
<registry name>: o nome do registro. -
<resource group>: o nome do grupo de recursos que você usou. -
<sku>: valores aceitos, Básico, Clássico, Premium ou Standard.
O comando anterior:
- Cria um Registro de Contêiner do Azure, dado um nome de registro, no grupo de recursos especificado.
- Habilitado um usuário administrador — isso é necessário para instâncias de contêiner do Azure.
Para obter mais informações, consulte Início Rápido: Criar um registro de contêiner do Azure.
Enviar imagem ao registro de contêiner
Com a imagem do Docker do .NET criada e o recurso de registro de contêiner criado, agora você pode enviar a imagem por push para o registro de contêiner.
Clique com o botão direito do mouse no projeto no Gerenciador de Soluções e selecione Publicar. A caixa de diálogo Publicar é exibida. Para o Destino, selecione Azure e , em seguida, Avançar.
Para o Destino Específico, selecione Registro de Contêiner do Azure e depois Avançar.
Em seguida, para o Registro de Contêiner, selecione o nome da assinatura que você usou para criar o recurso do ACR. Na área de seleção de registros de contêiner , selecione o registro de contêiner que você criou e selecione Concluir.
Isso cria um perfil de publicação, que pode ser usado para publicar a imagem no registro de contêiner. Selecione o botão Publicar para efetuar push da imagem para o registro de contêiner, a janela Saída relatará o progresso da publicação e, quando ela for concluída com êxito, você verá uma mensagem "Publicado com êxito".
Selecione o Docker na Barra de Atividades no Visual Studio Code. Expanda o painel em árvore IMAGES, depois expanda o nó de imagem appcloudservice e clique com o botão direito na marca latest.
A janela do terminal integrado relata o progresso do comando docker push no registro de contêiner.
Para enviar uma imagem por push para o registro de contêiner, você precisa entrar primeiro no Registro:
az acr login -n <registry name>
O az acr login comando faz login em um registro de contêiner por meio da CLI do Docker. Para enviar a imagem por push para o registro de contêiner, use o comando az acr build com o nome do registro de contêiner como :<registry name>
az acr build -r <registry name> -t appcloudservice .
O comando anterior:
- Empacota a fonte em um arquivo tar.
- Faz upload para o registro de contêiner.
- O registro de contêiner descompacta o arquivo tar .
- Executa o comando
docker buildno recurso de registro de contêiner contra o Dockerfile. - Adiciona a imagem ao registro de contêiner.
Para verificar se a imagem foi enviada por push com êxito para o registro de contêiner, navegue até o portal do Azure. Abra o recurso de registro de contêiner, em Serviços, selecione Repositórios. Você deve ver a imagem.
Implantar como instância de contêiner
No Visual Studio Code, selecione Docker na Barra de Atividades. Expanda o nó REGISTRIES e selecione Conectar Registro. Selecione o Azure quando solicitado e entre, se necessário.
Importante
A implantação como uma instância de contêiner do Visual Studio Code não funciona mais no Mac. Para obter mais informações, consulte GitHub: Sobre a Extensão do Docker para Visual Studio Code.
Expanda o nó REGISTRIES, selecione Azure, sua assinatura >, o registro de contêiner > e a imagem, e então clique com o botão direito do mouse na tag. Selecione Implantar Imagem em Instâncias de Contêiner do Azure.
Para criar uma instância de contêiner, primeiro crie um grupo de contêineres usando o az container create comando.
az container create -g <resource group> \
--name <instance name> \
--image <registry name>.azurecr.io/<image name>:latest \
--registry-password <password>
Forneça os valores apropriados:
-
<resource group>: o nome do grupo de recursos que você tem usado neste tutorial. -
<instance name>: o nome da instância de contêiner. -
<registry name>: o nome do registro de contêiner. -
<image name>: o nome da imagem. -
<password>: a senha para o registro de contêiner – você pode obtê-la no portal do Azure, > de recurso do Registro de Contêiner.
Para criar uma instância de contêiner, você também precisa criar um novo recurso no portal do Azure.
- Selecione a mesma Assinatura e o grupo de recursos correspondente da seção anterior.
- Insira um nome de contêiner—
appcloudservice-container - Selecione uma Região que corresponda à seleção de Local anterior.
- Para a origem da imagem, selecione Registro de Contêiner do Azure.
- Selecione o Registro pelo nome fornecido na etapa anterior.
- Selecione a Imagem e Tag de imagem.
- Selecione Examinar + criar.
- Supondo que a validação foi aprovada, selecione Criar.
Pode levar um momento para que os recursos sejam criados, uma vez criados, selecione o botão Ir para o recurso .
Para obter mais informações, consulte Início Rápido: Criar uma instância de contêiner do Azure.
Verificar a funcionalidade do serviço
Imediatamente após a criação da instância de contêiner, ela começa a ser executada.
Para verificar se o serviço de trabalho está funcionando corretamente, navegue até o portal do Azure no recurso de instância de contêiner, selecione a opção Contêineres .
Você verá os contêineres e o estado atual deles. Nesse caso, ele está em execução. Selecione Logs para ver a saída do serviço de trabalho do .NET.
Para verificar se o serviço de trabalho está funcionando corretamente, você pode visualizar os logs do aplicativo em execução. Use o comando az container logs:
az container logs -g <resource group> --name <instance name>
Forneça os valores apropriados:
-
<resource group>: o nome do grupo de recursos que você tem usado neste tutorial. -
<instance name>: o nome da instância de contêiner.
Você verá os logs de saída do serviço de trabalho do .NET, o que significa que você implantou com sucesso seu aplicativo conteinerizado no ACI.