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

时间:2017-11-10 10:02:31

标签: azure azure-web-sites azure-container-service

考虑包含React UISpring REST app的泊坞窗图片。我想将此部署到容纳的Azure Web应用程序,其中实例的URL会在UI正在侦听时在端口5000上静态提供Spring app8080UI通过HTTP与Spring app进行通信,因此UISpring 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_PORTSPRING_PORT,还可以设置一个包含两个网址的网络应用

如果没有,是否有替代解决方案?

上下文:

  1. 通过扩展仅包含Spring app(即FROM openjdk:8-jdk-alpine)和安装节点以及UI的图像来构建最终图像。

  2. entrypoint.sh脚本启动UI和SPRING APP

  3. 图片中显示的端口为80805000

  4. 我想要实现的目标图表:

1 个答案:

答案 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;的任何技术。

决定将所有服务放在单个容器中的单个容器(容器中的微服务)之后,还是将每个进程放在容器编排平台上的容器中(前者的时间和成本更低)运行它,后者更优雅,更灵活,但需要更多时间来构建管理,运行成本更高。