使用自定义 docker run 命令部署容器的 Azure Web 应用

I. *_*lov 5 azure azure-web-app-service azure-container-service

考虑一个包含 aReact UI和 a的泊坞窗图像Spring REST app。我想这个部署到Azure的Web应用程序集装箱,其中实例的URL打UI它的端口被静态地提供5000,而Spring app被监听8080。的UI与所述连通Spring app经由HTTP,因此请求所做出UISpring app在用户的机器上的评价(即不能访问Spring app通过localhost:8080)。但是,8080默认运行命令中未映射端口。另一个问题是 Web 应用程序只有一个 URL。

默认运行命令是:(从通过 FTP 登录并检查 docker 日志)

docker run -d -p <WEB_APP_PORT>:<UI_PORT> --name ... -e ... <IMG>
Run Code Online (Sandbox Code Playgroud)

我可以运行自定义docker run命令来公开UI_PORTSPRING_PORT并设置一个具有两个 URL 的 Web 应用程序吗?

如果没有,是否有其他解决方案?

对于上下文:

  1. 最终映像是通过扩展一个只包含Spring app(即FROM openjdk:8-jdk-alpine)和安装节点和 UI 的映像来构建的。

  2. 一个entrypoint.sh脚本同时启动 UI 和 SPRING APP

  3. 图像中暴露的端口是80805000

  4. 我试图实现的图表:

Isa*_*ado 2

不,您无法使用“适用于容器的 Azure Web 应用程序”执行您想要的操作,该平台允许您运行映射到仅一个 URL 的单个容器映像,并且您只能将 Web 端口(80、443)导出到world,以及 SSH (2222) 到他们的内部“kudzu”服务。

作为“纯粹主义者”,您描述的是“微服务堆栈”,因此您必须采用完整的容器编排,例如“Azure 容器服务”(AKS,使用 Kubernetes)或“Azure Service Fabric”(看起来将是当他们实现目标时太棒了)。

然而,你可以通过内部运行一个“映射服务”来完成它,比如一个 Nginx 代理,它会将“/”发送到 localhost:8080 UI,将 /api 发送到 localhost:5000 Spring API,或者传统上使用的任何技术单页应用程序“路由”。

这是一个决定,是将所有服务放入单个 URL 后面的单个容器中(容器中的微服务),还是将每个进程放入容器编排平台上的容器中(前者在运行时间和成本上更便宜,后者则更便宜)。更“优雅”和灵活,但需要更多时间来建立管理并且运行成本更高)。