Escolha um fluxo de trabalho de compilação e implantação de contêineres

O Azure Developer CLI (azd) pode compilar, publicar e implantar imagens de contêiner em vários serviços de hospedagem do Azure. Um fluxo de trabalho de contêiner combina um destino de hospedagem com um local de build e uma abordagem de publicação. A melhor combinação depende do aplicativo, das ferramentas que sua equipe tem disponível e de como você promove imagens entre ambientes.

Use este artigo para corresponder a essas opções às suas necessidades. Ele compara as seguintes decisões:

  • Qual serviço Azure hospeda seu contêiner.
  • Seja azd compilar a imagem localmente, compilá-la remotamente em Registro de Contêiner do Azure (ACR) ou usar uma imagem existente.
  • Se azd publica e implanta a imagem em conjunto ou como etapas separadas.

O artigo compara esses serviços de hospedagem de uso geral:

Comece comparando os destinos de hospedagem e as opções de compilação de imagem. Depois de entender essas opções, use-as para identificar um fluxo de trabalho candidato na seção Comparar fluxos de trabalho de implantação de contêiner .

Comparar destinos de hospedagem de contêiner

A host propriedade em azure.yaml identifica o serviço Azure ao qual azd implanta seu contêiner. Escolha o host independentemente do local de build da imagem.

Valor do host destino de hospedagem do Azure Fluxo de trabalho de contêiner Considerações
containerapp Aplicativos de Contêiner do Azure e trabalhos de Aplicativos de Contêiner Crie com base em um projeto e um Dockerfile, ou implante uma imagem pré-compilada. Dá suporte a variáveis de ambiente de nível de serviço e estratégias de implantação específicas dos Aplicativos de Contêiner. Use o mesmo valor do host para tarefas do Container Apps.
appservice Aplicativo Web linux para contêineres no Serviço de Aplicativo do Azure Crie com base em um projeto e um Dockerfile, ou implante uma imagem pré-construída. Sua infraestrutura deve provisionar um site Linux compatível com contêineres e configurar o acesso da identidade gerenciada ao ACR. azd deploy atualiza apenas a referência de imagem.
aks Serviço de Kubernetes do Azure Crie uma imagem e implante manifestos do Kubernetes, gráficos do Helm ou configurações do Kustomize. Fornece mais controle, mas exige que você gerencie o cluster e a configuração do Kubernetes. Usar Helm ou Kustomize com azd requer a habilitação de sinalizadores de recursos alfa.

Os hosts ai.endpoint e azure.ai.agent também oferecem suporte à configuração do Docker para cenários especializados do Microsoft Foundry. Para essas cargas de trabalho, consulte Implantar em pontos de extremidade online do Microsoft Foundry e a extensão de agente do Microsoft Foundry.

Comparar opções de compilação de imagem

A definição de serviço determina se azd cria uma imagem ou começa com uma imagem existente.

Opção de compilação Configuração necessária Onde o build é executado Motor de contêiner local Mais adequado para
Compilação local project e, opcionalmente, docker Seu ambiente de desenvolvimento ou executor de CI Obrigatório Iterações de desenvolvimento rápidas e ambientes de build que já fornecem o Docker ou o Podman.
Compilação remota do ACR project e docker.remoteBuild: true Registro de Contêiner do Azure Não é necessário, a menos que azd recorra após uma falha de compilação remota Compilações e ambientes de nuvem consistentes sem um mecanismo de contêiner local. O fluxo de trabalho de build remoto documentado tem como alvo o Aplicativos de Contêiner do Azure.
Imagem existente gerenciada por azd image Nenhuma compilação de fonte Pode ser necessário para operações de ciclo de vida de imagem Imagens que já existem localmente ou em um registro e que azd podem extrair, etiquetar e enviar.
Passagem de imagem remota image e docker.imagePassthrough: true Sem compilação Não é necessário Imagens remotas totalmente qualificadas que o recurso de hospedagem deve usar como estão.

Tenha essas diferenças conceituais em mente ao ler os artigos de configuração por opção:

  • Uma imagem pré-compilada usa a propriedade image em vez de project, e azd ainda pode extraí-la, etiquetá-la e enviá-la.
  • Um build remoto do ACR volta para um build local do Docker ou do Podman quando o build remoto falha e um mecanismo de contêiner com suporte está disponível.
  • O repasse de imagem requer uma referência remota de imagem totalmente qualificada, incluindo um registro de imagens; não pode ser combinado com remoteBuild e não oferece suporte às opções azd publish --from-package ou azd publish --to, porque azd não gerencia a imagem.

Para obter a configuração completa de cada opção, consulte Suporte a compilações remotas com o Registro de Contêiner do Azure, Usar registros de contêiner de terceiros, Implantações de contêiner no App Service com a CLI do Desenvolvedor do Azure e o esquema docker.

Comparar fluxos de trabalho de implantação de contêiner

Depois de comparar os destinos de hospedagem para contêineres em Comparar destinos de hospedagem para contêineres e as opções de build de imagem em Comparar opções de build de imagem, use a tabela a seguir para identificar os fluxos de trabalho mais adequados às suas necessidades.

Se precisar Começar com Por que
Implantar um aplicativo em contêineres em uma plataforma sem servidor Aplicativos de Contêiner do Azure com compilação local Esse fluxo de trabalho cria e implanta um projeto baseado em Dockerfile em um fluxo de trabalho de desenvolvimento.
Compilar sem instalar o Docker ou o Podman localmente Aplicativos de Contêiner do Azure com compilação remota no ACR O ACR cria a imagem a partir do seu projeto e do Dockerfile no Azure.
Implantar uma imagem que outro sistema de build produz Aplicativos de Contêiner do Azure ou App Service com uma imagem pré-compilada A image propriedade identifica a imagem existente em vez do código-fonte a ser criada.
Reutilizar uma imagem remota sem puxá-la, marcar ou efetuá-la por push Aplicativos de Contêiner do Azure com passagem de imagem azd passa a referência de imagem totalmente qualificada diretamente para o recurso de hospedagem.
Hospedar um aplicativo Web tradicional como um contêiner do Linux Aplicativo Web para contêineres no Serviço de Aplicativo do Azure O App Service fornece uma plataforma integrada de hospedagem web, enquanto sua infraestrutura controla a configuração do site pronta para contêineres.
Controlar manifestos do Kubernetes e configuração de cluster AKS (Serviço de Kubernetes do Azure) azd pode criar e publicar a imagem e, em seguida, implantar manifestos do Kubernetes, gráficos do Helm ou configurações do Kustomize.
Crie uma vez e promova a mesma imagem em diferentes ambientes azd publish, seguido por azd deploy --from-package A publicação e a implantação são separadas, portanto, cada ambiente recebe a mesma imagem.

Cada linha combina as opções de hospedagem apresentadas em Comparar destinos de hospedagem para contêineres e as opções de criação de imagem apresentadas em Comparar opções de criação de imagem como ponto de partida. Configure a opção desejada em azure.yaml e deixe que seus arquivos Bicep ou Terraform provisionem os recursos correspondentes de hospedagem e registro.

Uma definição mínima de serviço define o host, a fonte de compilação e o Dockerfile:

services:
  api:
    project: ./src/api
    language: docker
    host: containerapp
    docker:
      path: ./Dockerfile

Para adaptar essa definição a outro host, altere o host valor e siga o contrato de configuração por host:

Comparar comandos de publicação e implantação

Depois de escolher um host e uma opção de compilação, selecione se deseja combinar ou separar a publicação de imagens e a implantação.

Command Ações de imagem Ação de recurso do Azure Usar quando
azd up Compilar e enviar por push Prover e implantar Você deseja criar ou atualizar o ambiente completo e implantar o aplicativo em um fluxo de trabalho.
azd deploy Compilar e enviar por push Implantar A infraestrutura já existe e você deseja implantar alterações de aplicativo.
azd publish Compilar e efetuar push None Você quer criar um artefato de registro sem implantá-lo. azd publish dá suporte a aplicativos de contêiner e serviços do AKS.
azd publish --from-package <image> Enviar uma imagem local existente None Outro processo criou a imagem e você deseja azd publicá-la.
azd deploy --from-package <image> None Implantar Você deseja implantar uma imagem específica sem reconstruí-la.

Por exemplo, publique uma imagem com versão e implante a mesma imagem em outro ambiente:

azd publish api --to myregistry.azurecr.io/my-api:v1.0.0
azd env select production
azd deploy api --from-package myregistry.azurecr.io/my-api:v1.0.0

Esse fluxo de trabalho impede diferenças que podem ocorrer quando você recompila uma imagem para cada ambiente. Para ver um fluxo de promoção completo, consulte os fluxos de trabalho de publicação do Azure Developer CLI.