Ler em inglês

Partilhar via


Tutorial: Criar e implantar a partir do código-fonte para Aplicativos de Contêiner do Azure

Este artigo mostra como criar e implantar um aplicativo nos Aplicativos de Contêiner do Azure a partir do código-fonte em sua máquina em sua linguagem de programação preferida.

Neste tutorial, você:

  • Crie uma aplicação Web simples.
  • Crie um Dockerfile associado para seu aplicativo.
  • Crie uma imagem a partir do código compilado e envie-a por push para um registro de contêiner.
  • Use a identidade gerenciada para acessar com segurança seu registro de contêiner.
  • Implante seu contêiner nos Aplicativos de Contêiner do Azure.
  • Exiba seu aplicativo em um navegador para verificar a implantação.

Pré-requisitos

Para concluir este projeto, você precisa dos seguintes itens:

Necessidade Instruções
Conta do Azure Se você não tiver uma, crie uma conta gratuitamente. Você precisa da permissão de Colaborador ou Proprietário na assinatura do Azure para continuar.

Consulte Atribuir funções do Azure usando o portal do Azure para obter detalhes.
CLI do Azure Instale a CLI do Azure ou atualize para a versão mais recente. A CLI do Desenvolvedor do Azure (azd comandos) está disponível por meio da CLI do Azure.

Dependendo da sua escolha de idioma, você também pode precisar instalar o tempo de execução, SDK e outras dependências apropriados.

Instale o SDK do .NET.

Criar o aplicativo local

As etapas a seguir mostram o código e as dependências necessárias para criar um aplicativo de exemplo para implantar em Aplicativos de Contêiner do Azure.

Nota

Se você gostaria de usar outro idioma diferente dos listados, digite o seguinte prompt em seu modelo de IA preferido.

Antes de enviar a solicitação, substitua <LANGUAGE> pelo idioma de sua escolha.

Generate the simplest possible "hello world" web server in idiomatic <LANGUAGE>.

Make sure to include any dependencies required for the application to run locally and in production. 
  1. Crie e execute seu código-fonte.

    Crie um novo projeto C#.

    dotnet new webapp --name MyAcaDemo --language C#
    

    Mude para a pasta MyAcaDemo .

    cd MyAcaDemo
    

    Abra Program.cs em um editor de código e substitua o conteúdo pelo código a seguir.

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }
    
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseUrls("http://*:8080");
                });
    }
    

    A implementação da Program classe com esse código cria a base de um aplicativo Web. Em seguida, crie uma classe responsável por retornar uma página da Web como resposta.

    Na mesma pasta, crie um novo arquivo chamado Startup.cs e digite o código a seguir.

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
        }
    
        public void Configure(IApplicationBuilder app)
        {   
            app.UseRouting();
    
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });
            });
        }
    }
    

    Agora, quando uma solicitação é feita para o seu aplicativo web, o texto "Hello World!" é retornado. Para verificar se o código está sendo executado corretamente em sua máquina local, compile seu projeto na configuração de versão.

    dotnet build -c Release
    

    Em seguida, execute o aplicativo para verificar se o código está implementado corretamente.

    dotnet run --configuration Release
    

    Depois de verificar se o aplicativo funciona conforme o esperado, você pode parar o servidor local e passar para a criação de um Dockerfile para poder implantar o aplicativo em Aplicativos de Contêiner.

  2. Na pasta MyAcaDemo, crie um arquivo chamado Dockerfile e adicione o seguinte conteúdo.

    FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
    WORKDIR /src
    COPY . .
    RUN dotnet publish -c Release -o /app/publish
    
    FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final
    WORKDIR /app
    COPY --from=build /app/publish .
    EXPOSE 8080
    ENTRYPOINT ["dotnet", "MyAcaDemo.dll"]
    

    Agora que você tem seu código e um Dockerfile prontos, você pode implantar seu aplicativo em Aplicativos de Contêiner do Azure.

Criar recursos do Azure

  1. Entre no Azure a partir da CLI com o seguinte comando. Para concluir o processo de autenticação, siga todas as instruções.

    az login
    
  2. Instale ou atualize a extensão Aplicativos de Contêiner do Azure para a CLI do Azure.

    az extension add --name containerapp --upgrade
    

    Nota

    Se você receber erros sobre parâmetros ausentes ao executar az containerapp comandos, certifique-se de ter a versão mais recente da extensão Aplicativos de Contêiner do Azure instalada.

  3. Agora que a configuração da CLI do Azure está concluída, você pode definir um conjunto de variáveis de ambiente.

    Antes de executar o comando a seguir, revise os valores fornecidos.

    O local está configurado como Central dos EUA, mas você pode mudar para um local mais próximo de você, se preferir.

    LOCATION="CentralUS"
    RESOURCE_GROUP="my-demo-group"
    IDENTITY_NAME="my-demo-identity"
    ENVIRONMENT="my-demo-environment"
    REGISTRY_NAME="mydemoregistry$(openssl rand -hex 4)"
    CONTAINER_APP_NAME="my-demo-app"
    

    O mydemoregistry$(openssl rand -hex 4) comando gera uma cadeia de caracteres aleatória para usar como seu nome de registro de contêiner. Os nomes do Registro devem ser globalmente exclusivos, portanto, essa cadeia de caracteres ajuda a garantir que seus comandos sejam executados com êxito.

  4. Crie um grupo de recursos para organizar os serviços relacionados à implantação do seu aplicativo de contêiner.

    az group create \
      --name $RESOURCE_GROUP \
      --location $LOCATION \
      --output none
    
  5. Crie uma identidade gerenciada atribuída pelo usuário e obtenha sua ID com os seguintes comandos.

    Primeiro, crie a identidade gerenciada.

    az identity create \
        --name $IDENTITY_NAME \
        --resource-group $RESOURCE_GROUP \
        --output none
    

    Agora defina o identificador de identidade em uma variável para uso posterior.

    IDENTITY_ID=$(az identity show \
      --name $IDENTITY_NAME \
      --resource-group $RESOURCE_GROUP \
      --query id \
      --output tsv)
    
  6. Crie um ambiente de Aplicativos de Contêiner para hospedar seu aplicativo usando o comando a seguir.

    az containerapp env create \
        --name $ENVIRONMENT \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --mi-user-assigned $IDENTITY_ID \
        --output none
    
  7. Crie uma instância do Azure Container Registry (ACR) em seu grupo de recursos. O registro armazena sua imagem de contêiner.

    az acr create \
      --resource-group $RESOURCE_GROUP \
      --name $REGISTRY_NAME \
      --sku Basic \
      --output none
    
  8. Atribua sua identidade gerenciada atribuída pelo usuário à sua instância do Registro de contêiner com o seguinte comando.

    az acr identity assign \
      --identities $IDENTITY_ID \
      --name $REGISTRY_NAME \
      --resource-group $RESOURCE_GROUP \
      --output none
    

Criar e enviar a imagem para um registro

Crie e envie sua imagem de contêiner para sua instância de registro de contêiner com o seguinte comando.

az acr build \
    -t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
    -r $REGISTRY_NAME .

Este comando aplica a tag helloworld à imagem do contêiner.

Crie seu aplicativo de contêiner

Crie seu aplicativo de contêiner com o seguinte comando.

az containerapp create \
  --name $CONTAINER_APP_NAME \
  --resource-group $RESOURCE_GROUP \
  --environment $ENVIRONMENT \
  --image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
  --target-port 8080 \
  --ingress external \
  --user-assigned $IDENTITY_ID \
  --registry-identity $IDENTITY_ID \
  --registry-server $REGISTRY_NAME.azurecr.io \
  --query properties.configuration.ingress.fqdn

Este comando adiciona a acrPull função à sua identidade gerenciada atribuída pelo usuário, para que ele possa extrair imagens do seu registro de contêiner.

A tabela a seguir descreve os parâmetros usados por esse comando.

Parâmetro valor Description
name $CONTAINER_APP_NAME O nome do seu aplicativo de contêiner.
resource-group $RESOURCE_GROUP O grupo de recursos no qual seu aplicativo de contêiner é implantado.
environment $ENVIRONMENT O ambiente no qual seu aplicativo de contêiner é executado.
image $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" A imagem do contêiner a ser implantada, incluindo o nome do Registro e a marca.
target-port 80 Corresponde à porta que seu aplicativo está escutando para solicitações.
ingress external Torna seu aplicativo de contêiner acessível a partir da Internet pública.
user-assigned $IDENTITY_ID A identidade gerenciada atribuída pelo usuário para seu aplicativo de contêiner.
registry-identity registry-identity A identidade usada para acessar o registro de contêiner.
registry-server $REGISTRY_NAME.azurecr.io O endereço do servidor do seu registro de contêiner.
query properties.configuration.ingress.fqdn Filtra a saída apenas para o FQDN (nome de domínio totalmente qualificado) do aplicativo.

Quando esse comando for concluído, ele retornará a URL para seu novo aplicativo Web.

Verificar a implementação

Copie o URL do aplicativo para um navegador da Web. Depois que o aplicativo de contêiner é iniciado, ele retorna Hello World!.

Como esta é a primeira vez que o aplicativo é acessado, pode levar alguns momentos para que o aplicativo retorne uma resposta.

Clean up resources (Limpar recursos)

Se você não for usar os recursos do Azure criados neste tutorial, poderá removê-los com um único comando. Antes de executar o comando, há uma próxima etapa nesta série de tutoriais que mostra como fazer alterações em seu código e atualizar seu aplicativo no Azure.

Se tiver terminado e quiser remover todos os recursos do Azure criados neste tutorial, exclua o grupo de recursos com o seguinte comando.

az group delete --name aca-demo

Gorjeta

Tem problemas? Informe-nos no GitHub abrindo um problema no repositório de Aplicativos de Contêiner do Azure.

Próximos passos

Em seguida, continue para saber como atualizar o aplicativo de contêiner que você criou.