Usare registri contenitori di terze parti

L'interfaccia della riga di comando per sviluppatori di Azure (azd) supporta registri contenitori di terze parti esterni per la distribuzione. Per usare questa funzionalità, devi autenticarti manualmente nel registro esterno dei container prima di eseguire il comando azd deploy.

L'autenticazione basata su Docker è necessaria solo quando azd gestisce automaticamente le operazioni di immagine, ad esempio pull, compilazione, assegnazione di tag o push di immagini. Se un servizio è configurato con services.<name>.docker.imagePassthrough: true, azd riutilizza l'immagine remota configurata as-is. In questo caso, azd non richiede Docker o Podman e non esegue alcuna procedura di autenticazione del Registro di sistema o ciclo di vita dell'immagine per tale servizio.

Autenticazione

Eseguire docker login ed eseguire l'autenticazione nel registro contenitori esterno. Potrebbe essere necessario seguire altri passaggi di installazione o configurazione per il provider del Registro di sistema specifico.

docker login <your-registry>

Scenari di esempio

È possibile configurare azd per eseguire il push e il pull di immagini da un registro contenitori esterno nel azure.yaml file del modello. Il supporto per più registri contenitori offre maggiore flessibilità per i flussi di lavoro di distribuzione.

Scaricare da un registro esterno dei contenitori

In questo esempio, durante azd il contenitore viene prelevato da docker.io/username/nginx:latest e referenziato direttamente dal servizio app contenitore.

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 configurazione dell'infrastruttura di Container Apps deve prevedere le credenziali necessarie per recuperare i contenitori dai registri di contenitori privati.

Per distribuire un'immagine remota senza richiedere Docker o Podman, impostare services.<name>.docker.imagePassthrough: true e fornire l'immagine completa, incluso il Registro di sistema, in 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 presenta i vincoli seguenti:

  • services.<name>.image Deve essere impostato.
  • Non può essere combinato con docker.remoteBuild.
  • Non supporta i --from-package flag di override dell'immagine, azd publish e --to, per quel servizio.

Recupera, etichetta e invia al registro esterno

Si consideri un azure.yaml file con la configurazione seguente:

# 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   

Il azd deploy comando esegue il pull dell'immagine nginx configurata. In questo caso, si tratta di un'immagine pubblica nell'hub Docker, quindi azd retaga il contenitore/immagine e lo inserisce nel registro Docker.

Compila, assegna un tag e pubblica in un registro esterno con azd deploy

Si consideri un azure.yaml file con la configurazione seguente:

# 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

Il azd deploy comando compila il contenitore, lo contrassegna ed esegue il push nel registro Docker.