Usar registros de contenedores de terceros

Azure Developer CLI (azd) admite registros de contenedor externos de terceros para la implementación. Para usar esta función, necesita autenticarse manualmente en el registro externo de contenedores antes de ejecutar azd deploy.

La autenticación basada en Docker solo es necesaria cuando azd administra las operaciones de imagen automáticamente, como extraer, compilar, etiquetar o insertar imágenes. Si un servicio está configurado con services.<name>.docker.imagePassthrough: true, azd reutiliza la imagen remota configurada as-is. En ese caso, azd no requiere Docker ni Podman y no realiza ninguna autenticación en el registro ni ningún paso del ciclo de vida de la imagen para ese servicio.

Autenticación

Ejecute docker login y autentíquese en el registro de contenedor externo. Es posible que tenga que seguir más pasos de instalación o configuración para su proveedor de registro específico.

docker login <your-registry>

Escenarios de ejemplo

Puede configurar azd para insertar y extraer imágenes de un registro de contenedor externo en el archivo azure.yaml de la plantilla. La compatibilidad con más registros de contenedor proporciona mayor flexibilidad para los flujos de trabajo de implementación.

Descargar desde un registro de contenedores externo

En este ejemplo, durante la implementación de azd, el contenedor se extrae de docker.io/username/nginx:latest y se hace referencia a él directamente en el servicio de aplicaciones de contenedor.

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:

La configuración de infraestructura de la aplicación de contenedor debe configurar las credenciales al extraer contenedores de registros de contenedor privados.

Para implementar una imagen remota sin necesidad de Docker o Podman, establezca services.<name>.docker.imagePassthrough: true y proporcione la imagen completa, incluido el registro, en 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 tiene las restricciones siguientes:

  • Requiere que se establezca services.<name>.image.
  • No se puede combinar con docker.remoteBuild.
  • No admite los indicadores --from-package de anulación de imagen, azd publish y --to, para ese servicio.

Descargar, etiquetar y subir a un registro externo

Considere un archivo azure.yaml con la siguiente configuración:

# 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   

El azd deploy comando extrae la imagen nginx configurada. En este caso, se trata de una imagen pública en docker Hub, por lo que azd vuelve a etiquetar el contenedor o la imagen e lo inserta en el registro de Docker.

Compilar, etiquetar y publicar en un registro externo con azd deploy

Considere un archivo azure.yaml con la siguiente configuración:

# 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

El azd deploy comando compila el contenedor, lo etiqueta e inserta en el registro de Docker.