docker-compose - 如何使用 docker compose 在容器的 Azure Web 应用程序上托管多个站点
问题描述
我想使用 docker compose 文件为我们的 Linux 托管站点部署多个公共端点。
我们已经部署了一个站点,该站点将图像存储在私有 ACR 上,并托管在 Azure App Service 上(使用 Web App for Containers)。它通过 Azure DevOps 部署并且运行良好。
然而,我们希望使用同一个站点来托管一个额外的组件,一个 api,以便我们最终得到这些端点:
- https://www.example.com - 主站点
- https://www.example.com/api - api
如果可能,我们希望避免使用第二个应用服务或子域。我们更喜欢的架构是使用相同的 https 证书和端口(443)来托管 api。该网站和 api 共享一个相似的代码库。
在标准的应用服务世界中,我们可以很容易地为主应用部署一个虚拟目录,这很简单。
这个模型虽然在使用容器时似乎更复杂。
我们该怎么做呢?我已经看过这个文档:https ://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-multi-container-app 。然而,在这个例子中,第二个容器是一个私有容器——它不会被暴露。
我们是否应该使用 docker compose 文件(请提供示例)?或者,有没有一种方法可以使用 Azure DevOps 任务以我想要的方式部署到虚拟目录。这是我们用于单容器部署的任务:
解决方案
根据您的要求,Web App For Container 也是一种 Web App 服务,如您所见,它只能将一个容器暴露给外部(Internet),而其他容器是私有的。所以如果你想使用多容器Web App来部署镜像访问主站点和API站点等多个端点,那么你的目的是不可能实现的。
根据Web App只对外暴露一个容器的特性,你可以做的就是在代码中或者通过工具,比如Nginx,只创建一个镜像并路由到endpoints . 然后将其部署到 Web App for Container。只有这样,您才能从一个 App 服务访问多个端点。
推荐阅读
- elixir - 如何在 Phoenix 上一次将字符串参数转换为整数
- c# - 检查一个字符数组的元素是否出现在另一个字符数组中
- python - 使用 smtplib 库在 python 中登录错误
- javascript - CSS如何在调整页面大小时防止元素重叠并保持元素固定?
- sql-server - 如何将 Flask 应用程序连接到 SQL Server?
- javascript - Console.log 上的数组返回数组长度但不是实际数组?
- python - SCIP 的数值问题:相同的问题,不同的最优值
- html - 表格没有显示超过某一行的行?
- python - Matplotlib X 轴 DateTime - 将数据放在一起
- java - 用于接收电子邮件的 JavaMail API