如何使用 docker compose 在容器的 Azure Web 应用程序上托管多个站点

How to host multiple sites on Azure web app for Containers using docker compose

我想使用 docker 组合文件为我们的 Linux 托管站点部署多个 public 端点。

我们已经部署了一个站点,该站点的图像存储在私有 ACR 上并托管在 Azure App Service 上(使用 Web App for Containers)。它通过 Azure DevOps 部署并且运行良好。

但是,我们希望使用同一个站点来托管一个额外的组件,一个 api,这样我们最终会得到这些端点:

如果可能,我们希望避免使用第二个应用程序服务或子域。我们更喜欢的架构是使用相同的 https 证书和端口 (443) 来托管 api。该网站和 api 共享相似的代码库。

在标准应用服务世界中,我们可以很容易地向主应用部署一个虚拟目录,这非常简单。

这个模型在使用容器时似乎更复杂。

我们该怎么做?我已经看过这个文档:https://docs.microsoft.com/en-us/azure/app-service/containers/tutorial-multi-container-app。但是,在此示例中,第二个容器是私有容器 - 不会公开。

我们应该使用 docker 撰写文件(请举个例子)吗?或者,有没有一种方法可以使用 Azure DevOps 任务以我想要的方式部署到虚拟目录。这是我们用于单个容器部署的任务:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/azure-rm-web-app-containers?view=azure-devops

根据您的要求,Web App For Container也是一种Web App服务,如您所见,它只能对外(Internet)暴露一个容器,其他容器是私有的。所以如果你想使用多容器Web App来部署镜像访问多个端点,比如主站点和API站点,那么你的目的是不可能实现的。

根据Web App对外只暴露一个容器的特点,你可以做的就是只创建一个镜像,自己在代码中或者通过工具路由到endpoints ,例如 Nginx。然后将其部署到容器的 Web 应用程序。只有这样,您才能从一个应用服务访问多个端点..