考虑包含React UI
和Spring REST app
的泊坞窗图片。我想将此部署到容纳的Azure Web应用程序,其中实例的URL会在UI
正在侦听时在端口5000
上静态提供Spring app
在8080
。 UI
通过HTTP与Spring app
进行通信,因此UI
向Spring app
发出的请求会在用户的计算机上进行评估(即可以&#39} ; t通过Spring app
访问localhost:8080
。但是,端口8080
未映射到默认运行命令中。另一个问题是Web应用程序只有一个URL。
默认运行命令是:(通过FTP登录并检查泊坞日志)
docker run -d -p <WEB_APP_PORT>:<UI_PORT> --name ... -e ... <IMG>
我是否可以运行自定义docker run
命令来公开UI_PORT
和SPRING_PORT
,还可以设置一个包含两个网址的网络应用
如果没有,是否有替代解决方案?
上下文:
答案 0 :(得分:1)
不,您无法使用#34;容器的Azure Web应用程序&#34;,该平台允许您运行仅映射到一个URL的单个容器映像,并且您只能使用将Web端口(80,443)导出到世界,并将SSH(2222)导出到他们的内部&#34; kudzu&#34;服务。
作为&#34; purist&#34;,您正在描述一个&#34;微服务堆栈&#34;,因此您必须使用完整的容器编排,例如&#34; Azure容器服务&#34; (AKS,使用Kubernetes),或者&#34; Azure Service Fabric&#34; (当他们达到目标时看起来很棒)。
但是,您可以通过内部运行&#34;映射服务&#34;来完成它,就像Nginx代理一样,它会发送&#34; /&#34;到localhost:8080 UI和/ api到localhost:5000 Spring API,或传统上用于单页应用程序&#34;路由&#34;的任何技术。
决定将所有服务放在单个容器中的单个容器(容器中的微服务)之后,还是将每个进程放在容器编排平台上的容器中(前者的时间和成本更低)运行它,后者更优雅,更灵活,但需要更多时间来构建管理,运行成本更高。