我有一个奇怪的问题,可能是我漏掉了什么。web应用程序被创建为具有默认设置(Quickstart)的容器,我正在使用Azure容器注册表推送我的docker映像。我有登录到ACR的管道,构建和推送图像,然后将图像部署到web应用程序。所有这些任务都是成功的。但当我在azure门户中打开webapp时,图像源被设置为docker hub,而不是Azure Container registry.The的完整图像名称和标签。有什么建议我遗漏了什么吗?
更新:如果有帮助,我已经添加了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)
发布于 2020-07-18 03:11:29
使用CLI创建应用服务:
az webapp create --resource-group myResourceGroup --plan myAppServicePlan --name <app-name> --deployment-container-image-name <azure-container-registry-name>.azurecr.io/mydockerimage:v1.0.0
这是用于公共镜像的,但是根据documentation,如果你想使用私有镜像,你还必须为你的网络应用配置注册表凭证,如果这不是Docker注册表,你必须提供-docker-registry-server-url
az webapp config container set --name <app-name> --resource-group myResourceGroup --docker-custom-image-name <azure-container-registry-name>.azurecr.io/mydockerimage:v1.0.0 --docker-registry-server-url https://<azure-container-registry-name>.azurecr.io --docker-registry-server-user <registry-username> --docker-registry-server-password <password>
发布于 2020-07-18 04:16:06
TLDR:您需要在UI中选择存储库;或者通过ARM或AzureCLI添加凭据。
您可以像现在一样使用部署任务,并不是所有的开发人员都需要访问WebApp。但是,您至少需要一次设置注册表的凭据。UI基本上会显示它对如何解释底层配置的“最佳猜测”。
您也可以在每次管道运行时这样做,尽管我不建议这样做。
附注:如果您选择持续部署,您也可以让您的webapp在容器注册表中更新某个标签时自动拉取该标签。
https://stackoverflow.com/questions/62957270
复制相似问题