我有一个奇怪的问题,可能是我遗漏了一些东西。 Web 应用程序创建为具有默认设置的容器(快速入门),我使用 Azure 容器注册表来推送我的 docker 镜像。我有一个管道,可以登录 ACR、构建并推送图像,然后将图像部署到 Web 应用程序。所有这些任务都成功了。但是当我进入azure门户中的web应用程序时,图像源设置为docker hub而不是Azure Container注册表。完整的图像名称和标签是ACR的。有什么建议吗?我缺少什么?
更新:我已经添加了 pipeline.yml 文件以供引用(如果有帮助的话)。我在推送 docker 镜像时登录注册表,确认该镜像已推送到 ACR 中。
- task: Docker@2
displayName: Login to QA Azure Container Registry
inputs:
command: login
containerRegistry: $(azureSubscriptionContainer) #Docker Registry type Service connection
- task: Docker@2
displayName: Build and Push
inputs:
command: buildAndPush
repository: $(repository) #custom name of repository in ACR
tags: $(Build.BuildId)
- task: AzureRMWebAppDeployment@4
displayName: Azure App Service Deploy
inputs:
appType: webAppContainer
ConnectedServiceName: $(azureSubscription) #ARM service connection
WebAppName: $(webApp)
DockerNamespace: $(dockerNameSpace) #ACR namespace myacr.azurecr.io
DockerRepository: $(repository) #custom name of repository in ACR
DockerImageTag: $(Build.BuildId)
最佳答案
TLDR:您需要在 UI 中选择存储库;或通过 ARM 或 AzureCLI 添加凭据。
您可以像现在一样使用部署任务,并非所有开发人员都需要访问 WebApp。但是,您需要至少设置一次注册表凭据。 UI 基本上会显示其“最佳猜测”,以了解如何解释底层配置。
您也可以在每次管道运行时都这样做,但我不建议这样做。
旁注:如果您选择“持续部署”,您还可以让您的 Web 应用程序在容器注册表中更新时自动拉取某个标记。
关于Azure Devops Pipeline ACR 部署到 Web 应用容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62957270/