Azure Developer CLI (azd) では、デプロイ用の外部サードパーティのコンテナー レジストリがサポートされています。 この機能を使用するには、azd デプロイを呼び出す前に、外部コンテナー レジストリに対して手動で認証する必要があります。
Docker ベースの認証は、 azd がイメージのプル、ビルド、タグ付け、イメージのプッシュなどのイメージ操作を管理する場合にのみ必要です。 サービスが services.<name>.docker.imagePassthrough: true で構成されている場合、 azd は構成されたリモート イメージ as-isを再利用します。 その場合、 azd は Docker または Podman を必要とせず、そのサービスのレジストリ認証またはイメージ ライフサイクルの手順を実行しません。
認証
docker login を実行して、外部コンテナー レジストリを認証します。 特定のレジストリ プロバイダーに対して、さらにセットアップまたは構成の手順に従う必要がある場合があります。
docker login <your-registry>
シナリオの例
テンプレートの azd ファイル内の外部コンテナー レジストリからイメージをプッシュおよびプルするように azure.yaml を構成できます。 より多くのコンテナー レジストリをサポートすると、デプロイ ワークフローの柔軟性が向上します。
外部コンテナー レジストリからプルする
この例では、azd デプロイ中にコンテナーが docker.io/username/nginx:latest からプルされ、コンテナー アプリ サービスで直接参照されます。
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
注
containerapp infra 構成では、プライベート コンテナー レジストリからコンテナーをプルするときに資格情報を構成する必要があります。
Docker または Podman を必要とせずにリモート イメージをデプロイするには、 services.<name>.docker.imagePassthrough: true 設定し、レジストリを含む完全修飾イメージを 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 には、次の制約があります。
-
services.<name>.imageを設定する必要があります。 -
docker.remoteBuildと組み合わせることはできません。 - このサービスでは、
azd publishイメージオーバーライド フラグ、--from-package、--toはサポートされていません。
プルし、タグを付けて、外部レジストリにプッシュ
次の構成の azure.yaml ファイルについて考えてみます。
# 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
azd deploy コマンドは、構成済みの nginx イメージをプルします。 この場合は、Docker ハブ上のパブリック イメージであるため、コンテナー/イメージ azd 再タグ付けして Docker レジストリにプッシュします。
azd deploy 時に外部レジストリへビルド、タグ付け & プッシュする
次の構成の azure.yaml ファイルについて考えてみます。
# 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
azd deploy コマンドは、コンテナーをビルドし、それにタグを付けて Docker レジストリにプッシュします。