首页 > 解决方案 > 为 Azure 多容器应用程序(多个存储库)设置 Azure Pipelines

问题描述

我目前有一个网络应用程序分为三个部分。每个部分都有自己的 git 存储库。

  1. 前端 Angular (foo.bar)
  2. 后端 Angular (foo.bar/admin)
  3. .NET Core API (foo.bar/api)

前面是一个 NGINX 服务器,它充当反向代理。目前,这一切都在一个虚拟机上运行,​​并带有一个 Jenkins 服务器,它允许我单独开发和部署每个部分,这是我非常喜欢的。

我想将应用程序容器化并将其移动到 Azure Web Service for Containers。对于 CD/CI,我想使用 Azure DevOps 和 Azure Pipelines。由于 Azure Web Service for Containers 通过 Docker Compose 和 Kubernetes 支持多容器。

主要问题是: 如何在多容器(通过 Docker Compose)环境中构建和部署一个特定容器(例如 Azure/frontend:10)?(不构建所有其他容器)

如果这是可能的...

还是我需要使用 Kubernetes?

或者,我可以在同一个服务计划上使用三个不同的 App Web,并按域/子域控制它。

  1. 前端 Angular (foo.bar)
  2. 后端 Angular (admin.foo.bar)
  3. .NET Core API (api.foo.bar)

我不知道从哪里开始。这也是一个小项目。我不想让它太复杂。

任何提示都非常受欢迎。提前致谢!

标签: azuredocker-composeazure-devopsazure-web-app-serviceazure-container-service

解决方案


我没有使用 Azure Pipelines 的经验,但是对于 Azure Container Registry 和 Azure Web App for Container 有一些想法。

首先,如果您只想通过 Docker compose 在多容器中构建一个特定的容器,您可以在教程中进行设置:

version: '3.3'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

组合也可以与文件中设置的一个容器一起使用。

其次,撰写文件可以在您运行命令为容器创建 Web 应用程序的任何地方。例如,您可以使用存储在本地计算机中的撰写文件在本地计算机上运行 CLI 命令。

第三,如果你使用 Azure Web App for Container,你应该在你的存储库中准备好之前准备好的 docker 镜像,例如 Azure Container Registry。它不喜欢安装在本地机器上的 docker compose。

AKS 也是一个不错的选择。您可以一个一个地创建服务,也可以将它们全部设置在一个 yaml 文件中。它非常灵活。

希望这会帮助你。如果您需要有关 AKS 或 ACR 的更多帮助,请留言。


推荐阅读