Použití registrů kontejnerů třetích stran

Azure Developer CLI (azd) podporuje externí registry kontejnerů třetích stran pro nasazení. Chcete-li tuto funkci použít, musíte se před voláním příkazu azd deploy ručně autentizovat k externímu registru kontejnerů.

Ověřování pomocí Dockeru je vyžadováno pouze tehdy, když azd za vás provádí operace s obrazy, jako je jejich stažení, sestavení, označení tagy nebo nahrání. Pokud je služba nakonfigurována pomocí services.<name>.docker.imagePassthrough: true, azd znovu použije nakonfigurovaný vzdálený obraz beze změn. V takovém případě azd nevyžaduje Docker ani Podman a pro tuto službu neprovádí žádné ověřování vůči registru ani kroky životního cyklu imagí.

Ověřování

Spusťte docker login a ověřte se vůči externímu registru kontejnerů. Možná budete muset postupovat podle dalších kroků nastavení nebo konfigurace pro konkrétního poskytovatele registru.

docker login <your-registry>

Ukázkové scénáře

V souboru azure.yaml vaší šablony můžete nakonfigurovat azd tak, aby nahrával a stahoval image z externího registru kontejnerů. Podpora více registrů kontejnerů poskytuje větší flexibilitu pro pracovní postupy nasazení.

Stažení z externího registru kontejnerů

V tomto příkladu se během nasazení azd kontejner stáhne z docker.io/username/nginx:latest a služba Container App Service na něj přímo odkazuje.

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

Poznámka:

Konfigurace infrastruktury kontejneru musí při načítání kontejnerů z privátních registrů kontejnerů nakonfigurovat přihlašovací údaje.

Pokud chcete nasadit vzdálenou image bez nutnosti Dockeru nebo Podmana, nastavte services.<name>.docker.imagePassthrough: true a zadejte plně kvalifikovanou image, včetně registru, v 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 má následující omezení:

  • Vyžaduje nastavení možnosti services.<name>.image.
  • Nedá se kombinovat s docker.remoteBuild.
  • Nepodporuje příznaky pro přepsání obrázku --from-package, azd publish a --to pro tuto službu.

Vyžádání, označení a nasdílení změn do externího registru

Zvažte soubor azure.yaml s následující konfigurací:

# 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   

Příkaz azd deploy stáhne nakonfigurovanou image nginx. V tomto případě se jedná o veřejný obraz na Docker Hubu, takže azd překleslí kontejner/obraz a nahraje ho do registru Dockeru.

Sestavení, označení tagem a nahrání do externího registru při azd deploy

Zvažte soubor azure.yaml s následující konfigurací:

# 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

Příkaz azd deploy sestaví kontejner, označí ho a odešle ho do registru Dockeru.