为Azure多容器应用程序(多个存储库)设置Azure管道

问题描述 投票:2回答:2

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

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

在前面是NGINX服务器,它充当反向代理。目前,它都与一个Jenkins服务器一起在VM上运行,这允许我分别开发和部署每个部分,这是我真正喜欢的。

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

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

如果可能的话......

  • 如何设置Azure管道和Azure容器注册表以允许我单独的容器部署
  • docker-compose文件在哪里?在一个单独的存储库?
  • 反向代理NGINX Dockerfile在哪里?在一个单独的存储库中?

或者我需要使用Kubernetes吗?

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

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

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

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

azure docker-compose azure-devops azure-web-app-service azure-container-service
2个回答
2
投票

我没有Azure管道的经验,但有一些关于Azure容器注册表和Azure Web App for Container的想法。

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

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

compose也可以使用文件中的一个容器集。

其次,compose文件可以是运行命令以创建Web App for Container的任何位置。例如,您可以使用存储在本地计算机中的撰写文件在本地计算机中运行CLI命令。

第三,如果您使用Azure Web App for Container,则应在存储库中准备好docker镜像,例如Azure容器注册表。它不喜欢在本地计算机上安装的docker compose。

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

希望这会帮助你。如果您需要有关AKS或ACR的更多帮助,请提供信息。


0
投票

您可以使用容器注册表,它允许您使用docker构建每个单独的容器。然后,您可以使用容器注册表中的容器部署多容器应用程序。

构建容器文件遵循标准方法,允许您复制configure等。一旦构建完成,你可以通过标记它们来推动它们:container_registry_name/container_name:{{.Run.ID}}

我会根据提供的示例使用生产数据库而不是容器进行建议,因为我遇到了数据库数据在容器重启时重置的问题。可以使用以下内容保留文件卷:

  • $ {} WEBAPP_STORAGE_HOME /事/另:在/ var / www / html等

Docker-Compose for容器(目前)不允许您在azure管道中使用build,因为它仅用于部署

首先需要构建dockerfiles,然后在docker-compose.yml中引用新存储的容器注册表图像。另请注意,您不能简单地在同一个撰写文件中引用docker hub图像和容器注册表图像。您将需要拉动和标记或构建和标记容器以便以这种方式使用它。您可以使用容器注册表图像或公共图像。

为了使您的应用能够连接到这些图像,您需要将其添加到您的应用设置,并允许管理员在容器注册表服务中:

 DOCKER_REGISTRY_SERVER_USERNAME = [azure-container-registry-name]
 DOCKER_REGISTRY_SERVER_URL = [azure-container-registry-name].azurecr.io
 DOCKER_REGISTRY_SERVER_PASSWORD = [password]

完成基本应用程序设置后,您可以配置持续集成选项以进行进一步开发,例如webhooks,构建选项等。

© www.soinside.com 2019 - 2024. All rights reserved.