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.
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.
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.
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.
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.
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
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.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.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
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)
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
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
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
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 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.
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.
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.
Em seguida, continue para saber como atualizar o aplicativo de contêiner que você criou.