Azure 開發人員 CLI (azd) 支援用於部署的外部第三方容器登錄。 若要使用這項功能,您必須在呼叫 azd 部署之前,先手動向外部容器登錄進行驗證。
只有在 azd 幫你管理映像作業時,才需要基於 Docker 的認證,例如拉取、建置、標籤或推送映像檔。 若服務配置為 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
注意
若要從私有容器登錄檔提取容器映像,您的 Container App 基礎結構組態必須設定認證資訊。
若要部署遠端映像檔而不需 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 hub 上的公開映像檔,所以 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 登錄檔。