Använda containerregister från tredje part

Azure Developer CLI (azd) stöder externa containerregister från tredje part för distribution. Om du vill använda den här funktionen måste du manuellt autentisera till det externa containerregistret innan du anropar azd distributionen.

Docker-baserad autentisering krävs endast när azd hanterar imageåtgärder åt dig, till exempel att hämta, bygga, tagga eller överföra avbildningar. Om en tjänst har konfigurerats med services.<name>.docker.imagePassthrough: trueazd återanvänder du den konfigurerade fjärrbilden as-is. I så fall azd kräver inte Docker eller Podman och utför inga registerautentiserings- eller avbildningslivscykelsteg för den tjänsten.

Autentisering

Kör docker login och autentisera till ditt externa containerregister. Du kan behöva följa fler installations- eller konfigurationssteg för din specifika registerprovider.

docker login <your-registry>

Exempelscenarier

Du kan konfigurera azd att push-överföra och hämta avbildningar från ett externt containerregister i mallfilen azure.yaml . Stöd för fler containerregister ger större flexibilitet för dina distributionsarbetsflöden.

Hämta från ett externt containerregister

I det här exemplet hämtas containern från azd och refereras direkt av containerapptjänsten under docker.io/username/nginx:latest distributionen.

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

Kommentar

Konfigurationen av containerappens infrastruktur måste konfigurera autentiseringsuppgifter när containrar hämtas från privata containerregister.

Om du vill distribuera en fjärravbildning utan att Docker eller Podman krävs anger du services.<name>.docker.imagePassthrough: true och anger den fullständigt kvalificerade avbildningen, inklusive registret, i 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 har följande begränsningar:

  • Det kräver att services.<name>.image anges.
  • Det kan inte kombineras med docker.remoteBuild.
  • Den stöder inte avbildningens åsidosättningsflaggor azd publish--from-package och --to, för den tjänsten.

Pull, tagga & pusha till externt register

Överväg en azure.yaml fil med följande konfiguration:

# 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   

Kommandot azd deploy hämtar den konfigurerade nginx-avbildningen. I det här fallet är det en offentlig avbildning på Docker Hub, så azd omtaggar containern/avbildningen och överför den till Docker-registret.

Skapa, tagga och skicka till externt register på azd deploy

Överväg en azure.yaml fil med följande konfiguration:

# 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

Kommandot azd deploy skapar containern, taggar den och push-överför den till Docker-registret.