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 autenticar manualmente no registro de contêiner externo antes de chamar azd deploy.

A autenticação baseada em Docker só é necessária quando azd gere operações de imagem por si, como puxar, construir, etiquetar ou enviar imagens. Se um serviço estiver configurado com services.<name>.docker.imagePassthrough: true, azd reutiliza a imagem remota configurada as-is. Nesse caso, azd não requer Docker ou Podman e não realiza quaisquer passos de autenticação do registo ou do ciclo de vida da imagem para esse serviço.

Autenticação

Execute docker login e autentique-se em seu registro de contêiner externo. Pode ser necessário seguir mais passos de configuração ou de instalação para o seu fornecedor específico de registo.

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 azure.yaml arquivo do seu modelo. O suporte a mais registos de contentores proporciona maior flexibilidade para os seus fluxos de trabalho de implementação.

Extrair do registro de contêiner externo

Neste exemplo, durante azd, o contentor é obtido de docker.io/username/nginx:latest e referenciado diretamente pelo serviço de aplicações em contentores.

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

Nota

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

Para implementar uma imagem remota sem necessidade de Docker ou Podman, defina services.<name>.docker.imagePassthrough: true e forneça a imagem totalmente qualificada, incluindo o registo, 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 suporta as azd publish bandeiras de sobreposição de imagem, --from-package e --to, para esse serviço.

Pull, tag & push para o registro externo

Considere um azure.yaml arquivo 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. Neste caso, é uma imagem pública no docker hub, por isso azd reetiqueta o contentor/imagem e envia-o para o registo docker.

Compilar, etiquetar e enviar para um registo externo durante o azd deploy

Considere um azure.yaml arquivo 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 constrói o contentor, etiqueta-o e envia-o para o registo docker.