5

我有一个使用 App Service - Web App for Containers 运行的多容器应用程序。只要在 Container Settings 选项卡下提供了 Docker Compose (Preview) 配置,这一切都可以正常工作。

目前,我正在使用 Azure DevOps 为特定容器创建构建,然后使用容器设置下的持续部署选项(在 Azure 门户中)从 ACR 中提取最新部署的容器映像。这也很好用。我可以为单个容器运行构建,并且只部署特定容器而不影响 Web 应用程序。(每个容器都是一个独立的项目,只有一个Dockerfile,不需要docker-compose)

但是,当我使用Azure App Service Deploy (版本 4.*)从 Azure DevOp 创建版本时,Azure 门户中的 Docker Compose(预览版)配置被完全清除,它默认为单容器并且应用程序中断。需要 Docker Compose 配置,因为它使主容器知道其他容器。

我正在使用 Azure App Service Deploy 的 4.* 版。我想使用 Azure DevOps 的发布功能,因为它提供了更多控制。

有没有办法可以从Azure App Service Deploy 版本 4指定 docker-compose 多容器配置,以便应用服务知道多容器配置,而不是清除 Docker Compose 中的多容器配置(预览版)

谢谢, 卡兰

4

2 回答 2

3

Azure App Service deploy用任务替换Release管道中的Azure Web App for Containers任务。有多个图像的参数和一个配置文件(Docker-Compose.yml)。

于 2020-05-17T19:45:00.360 回答
1

正如Dave提到的,这可以使用AzureWebAppContainer任务,但是文档没有提到有关多容器部署的选项。

我必须深入研究该任务的源代码才能发现任务参数。

https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/AzureWebAppContainerV1/taskparameters.ts

我将总结我的设置,让您了解如何使用它。我在 YAML 中定义了一个多阶段管道。有两个阶段,第一阶段构建和发布 Docker 镜像,第二阶段更新 Web App for Containers 应用服务。

第一阶段还生成一个工件,即docker-compose.yml用于配置 Web App for Containers 应用服务的文件。在我的存储库中,我有一个此文件的模板。在管道执行期间,docker 图像的标签在此模板中被替换(例如,使用 envsubst 或 sed)。然后生成的docker-compose.yml文件作为工件发布。

- task: PublishBuildArtifacts@1
  displayName: "Publish artifact"
  inputs:
    pathToPublish: $(Build.SourcesDirectory)/pipelines/assets/docker-compose.yml
    artifactName: yml

在管道的第二阶段,工件被下载并用于为容器配置 Web 应用程序。在下面的示例中,这是部署作业AzureWebAppContainer的一个步骤。

- task: AzureWebAppContainer@1
  displayName: 'Azure Web App for Containers'
  inputs:
    azureSubscription: '<YOUR_SUBSCRIPTION>'
    appName: '<YOUR_WEB_APP_FOR_CONTAINERS>'
    multicontainerConfigFile: $(System.ArtifactsDirectory)/yml/docker-compose.yml

生成docker-compose.yml的内容存储为工件,您以后可以随时查阅。

于 2020-09-30T12:01:40.300 回答