将Azure Devops Pipeline ACR部署到Web App容器

时间:2020-07-17 15:35:45

标签: azure docker azure-devops azure-pipelines azure-container-registry

我有一个奇怪的问题,可能我遗漏了一些东西。该Web应用程序被创建为具有默认设置(Quickstart)的容器,并且我正在使用Azure Container Registry推送我的Docker映像。我有登录ACR,构建和推送图像,然后将图像部署到Web应用程序的管道。所有这些任务都成功。但是当我进入Azure门户中的webapp时,图像源设置为docker hub而不是Azure容器注册表。完整的Inage名称和标记是ACR的。有什么建议让我丢失吗?enter image description here

更新:如果有帮助,我已经添加了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)

2 个答案:

答案 0 :(得分:1)

使用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,如果要使用私有映像,还必须配置Web应用程序的注册表凭据;如果不是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>

答案 1 :(得分:1)

TLDR:您需要在UI中选择存储库;或通过ARM或AzureCLI添加凭据。

https://docs.microsoft.com/en-us/azure/devops/pipelines/targets/webapp-on-container-linux?view=azure-devops&tabs=dotnet-core%2Cyaml#configure-registry-credentials-in-web-app

您可以像现在一样使用部署任务,并非所有开发人员都需要访问WebApp。但是,您需要至少一次设置注册表的凭据。用户界面基本上将显示其对如何解释基础配置的“最佳猜测”。

https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-custom-docker-image#configure-registry-credentials-in-web-app

您还可以在每次运行管道时都这样做,但是我不建议这样做。

旁注:如果您选择容器中的“连续部署”,则只要在容器注册表中对其进行更新,您的Web应用程序都可以自动提取特定标签。

相关问题