Usar registros de contêiner de terceiros

A CLI do Desenvolvedor do Azure (azd) dá suporte a registros de contêiner externos de terceiros para implantação. Para usar esse recurso, você precisa se autenticar manualmente no registro de contêiner externo antes de executar azd deploy.

A autenticação baseada no Docker só é necessária quando azd gerencia operações de imagem para você, como puxar, compilar, marcar ou enviar imagens por push. Se um serviço estiver configurado com services.<name>.docker.imagePassthrough: true, azd reutilize a imagem remota configurada as-is. Nesse caso, azd não requer Docker ou Podman e não executa nenhuma autenticação do Registro ou etapas de ciclo de vida de imagem para esse serviço.

Autenticação

Execute docker login e autentique no registro de contêiner externo. Talvez seja necessário seguir mais etapas de configuração ou configuração para seu provedor de registro específico.

docker login <your-registry>

Cenários de exemplo

Você pode configurar azd para enviar e extrair imagens de um registro de contêiner externo no arquivo azure.yaml do seu modelo. O suporte para mais registros de contêiner oferece maior flexibilidade para seus fluxos de trabalho de implantação.

Efetuar pull do registro de contêiner externo

Neste exemplo, durante a implantação de azd, o contêiner é extraído e referenciado diretamente pelo serviço de aplicativo de contêiner docker.io/username/nginx:latest.

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: docker.io/<username>/nginx:latest
    host: containerapp

Observação

Sua configuração de infra-estrutura containerapp deve configurar credenciais ao extrair contêineres de registros de contêiner privados.

Para implantar uma imagem remota sem a necessidade de Docker ou Podman, defina services.<name>.docker.imagePassthrough: true e forneça a imagem totalmente qualificada, incluindo o registro, em services.<name>.image:

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: docker.io/<username>/nginx:latest
    host: containerapp
    docker:
      imagePassthrough: true

imagePassthrough tem as seguintes restrições:

  • É necessário definir services.<name>.image.
  • Não pode ser combinado com docker.remoteBuild.
  • Não oferece suporte às sinalizações de substituição de imagem azd publish, --from-package e --to para esse serviço.

Efetuar pull, marcar & enviar marcação para registro externo

Considere um arquivo azure.yaml com a seguinte configuração:

# azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  nginx:
    image: nginx
    host: containerapp
    docker:
      registry: docker.io/<username>
      image: nginx
      tag: latest   

O azd deploy comando puxa a imagem nginx configurada. Nesse caso, é uma imagem pública no Docker Hub, portanto, azd remarca o contêiner/imagem e envia por push para o registro do Docker.

Compilar, marcar & enviar para o registro externo no azd deploy

Considere um arquivo azure.yaml com a seguinte configuração:

# azure.yaml

name: todo-nodejs-mongo-aca
metadata:
  template: todo-nodejs-mongo-aca@0.0.1-beta
services:
  api:
    project: ./src/api
    host: containerapp
    docker:
      registry: docker.io/<username>
      image: todo-api

O azd deploy comando cria o contêiner, marca-o e envia-o por push para o registro do Docker.