首页 > 解决方案 > 在一个 Azure 应用服务计划上运行两个 docker 容器

问题描述

我有两个容器需要在同一台机器上运行。第一个容器是服务器,第二个是代理。 服务器镜像标签名称:local-wptserver 服务器镜像标签名称:local-wptagent

我可以让它在本地工作,所以我试图将它部署到云 (Azure) 以供团队使用。

这就是我在本地运行它的方式::

docker run -d -p 4000:80 local-wptserver

docker run -d -p 4001:80 --network="host" -e "SERVER_URL=http://localhost:4000/work/" -e "LOCATION=EastUS_wptdriver" local-wptagent

这基本上将服务器和代理设置为相互通信,因此一旦我开始对服务器进行 API 调用,它就会与代理一起安排作业并返回结果。

但是,由于我的图像现在位于 Azure 容器注册表中,如何让容器使用这些额外参数进行实例化 (--network="host" -e "SERVER_URL= http://localhost:4000/work/ " -e " LOCATION=EastUS_wptdriver") 部署到 Web 应用程序时?这是我可以在创建图像之前添加到 docker 文件中的东西吗?如果是,如何?

注意:我使用相同的 Azure 应用服务计划来确保两个 Web 应用(从 Azure 容器注册表中的两个不同存储库构建:服务器和代理)位于同一台计算机上。

标签: containersazure-web-app-serviceazure-container-registry

解决方案


当您想在 Azure Web App 中部署多个容器时,您需要使用 docker-compose 文件来部署多个容器。您可以按照示例中的步骤进行操作。

然后,Azure Web App 的 docker-compose 中不支持 --network ,您可以在此处查看所有支持的 compose 选项。不过不用担心,容器可以通过端口相互通信。

根据您将图像推送到 Azure 容器注册表的消息。然后你应该使用 ACR 作为 docker 注册表。因此,您需要为您的 ACR 设置环境变量以及此处的详细信息。在我提供的链接中,您还知道许多细节。


推荐阅读