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.
Este artigo mostra como criar e implantar um aplicativo nos Aplicativos de Contêiner do Azure a partir do código-fonte em seu computador em sua linguagem de programação preferida.
Neste tutorial, você:
- Crie um aplicativo Web simples.
- Crie um Dockerfile associado para seu aplicativo.
- Crie uma imagem do código compilado e envie-a por push para um registro de contêiner.
- Use a identidade gerenciada para acessar com segurança o 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:
| Requisito | Instruções |
|---|---|
| Conta do Azure | Se você não tiver, crie uma conta gratuita. 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. O Azure Developer CLI (comandos azd) está disponível por meio da CLI do Azure. |
Dependendo da sua escolha de idioma, talvez você também precise instalar o runtime apropriado, o SDK e outras dependências.
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 nos Aplicativos de Contêiner do Azure.
Observação
Se você quiser usar outro idioma diferente dos listados, insira a solicitação a seguir 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.
Crie e execute seu código-fonte.
Crie um novo projeto em C#.
dotnet new webapp --name MyAcaDemo --language C#Altere para a pasta MyAcaDemo.
cd MyAcaDemoAbra
Program.csem 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"); }); }Implementar a classe
Programcom 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 nomeado
Startup.cse insira 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 ao seu aplicativo Web, o texto "Olá, Mundo!" é retornado. Para verificar se o código está sendo executado corretamente no computador local, crie seu projeto na configuração de versão.
dotnet build -c ReleaseEm seguida, execute seu aplicativo para verificar se o código foi implementado corretamente.
dotnet run --configuration ReleaseDepois de verificar se o aplicativo funciona conforme o esperado, você pode parar o servidor local e passar a criar um Dockerfile para que possa implantar o aplicativo em Aplicativos de Contêiner.
Na pasta MyAcaDemo, crie um arquivo nomeado
Dockerfilee adicione o conteúdo a seguir.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 nos Aplicativos de Contêiner do Azure.
Criar recursos do Azure
Entre no Azure da CLI com o comando a seguir. Para concluir o processo de autenticação, siga todos os prompts.
az loginInstale ou atualize a extensão aplicativos de contêiner do Azure para a CLI do Azure.
az extension add --name containerapp --upgradeObservação
Se você receber erros sobre parâmetros ausentes ao executar comandos
az containerapp, certifique-se de ter a versão mais recente da extensão aplicativos de contêiner do Azure instalada.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, examine os valores fornecidos.
O local é configurado como EUA Central, mas você pode alterar para um local mais próximo, 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 comando
mydemoregistry$(openssl rand -hex 4)gera uma cadeia de caracteres aleatória a ser usada como o nome do 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.Crie um grupo de recursos para organizar os serviços relacionados à implantação do aplicativo de contêiner.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION \ --output noneCrie uma identidade gerenciada atribuída pelo usuário e obtenha sua ID com os comandos a seguir.
Primeiro, crie a identidade gerenciada.
az identity create \ --name $IDENTITY_NAME \ --resource-group $RESOURCE_GROUP \ --output noneAgora 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)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 noneCrie uma instância do Registro de Contêiner do Azure (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 noneAtribua sua identidade gerenciada atribuída pelo usuário à instância do registro de contêiner com o comando a seguir.
az acr identity assign \ --identities $IDENTITY_ID \ --name $REGISTRY_NAME \ --resource-group $RESOURCE_GROUP \ --output none
Compilar e enviar a imagem por push para um registro
Crie e envie sua imagem de contêiner por push para a instância do registro de contêiner com o comando a seguir.
az acr build \
-t $REGISTRY_NAME".azurecr.io/"$CONTAINER_APP_NAME":helloworld" \
-r $REGISTRY_NAME .
Esse comando aplica a marca helloworld à sua imagem de contêiner.
Criar seu aplicativo de contêiner
Crie seu aplicativo de contêiner com o comando a seguir.
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
Esse comando adiciona a função acrPull à sua identidade gerenciada atribuída pelo usuário, para que ela possa efetuar pull de imagens do registro de contêiner.
A tabela a seguir descreve os parâmetros usados por este comando.
| Parâmetro | Valor | Descrição |
|---|---|---|
name |
$CONTAINER_APP_NAME |
O nome do 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 de contêiner a ser implantada, incluindo o nome e a marca do Registro. |
target-port |
8080 |
Corresponde à porta que seu aplicativo está escutando para solicitações. |
ingress |
external |
Torna seu aplicativo de contêiner acessível pela 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 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. |
Depois que esse comando for concluído, ele retornará a URL do novo aplicativo Web.
Verificar a implantação
Copie a URL do aplicativo em um navegador da Web. Depois que o aplicativo de contêiner é iniciado, ele retorna Olá, Mundo!.
Como essa é a primeira vez que o aplicativo é acessado, pode levar alguns instantes para que o aplicativo retorne uma resposta.
Limpar os recursos
Se você não 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 no código e atualizar seu aplicativo no Azure.
Se você terminar e quiser remover todos os recursos do Azure criados neste tutorial, exclua o grupo de recursos com o comando a seguir.
az group delete --name aca-demo
Dica
Está enfrentando problemas? Deixe-nos saber sobre GitHub abrindo um problema no repositório dos Aplicativos de Contêiner do Azure.
Próximas etapas
Em seguida, continue aprendendo a atualizar o aplicativo de contêiner que você criou.