【问题标题】:Azure web app for containers deploy with custom docker run command使用自定义 docker run 命令部署用于容器的 Azure Web 应用
【发布时间】:2017-11-10 10:02:30
【问题描述】:

考虑一个包含 React UISpring REST app 的 docker 映像。我想将此部署到容器的 Azure Web 应用程序,其中实例的 URL 命中 UI,该地址在端口 5000 上静态提供服务,而 Spring app 正在侦听 8080UI 通过 HTTP 与Spring app 通信,因此UISpring app 发出的请求在用户的机器上进行评估(即无法通过localhost:8080 访问Spring app)。但是,端口8080 未映射到默认运行命令中。另一个问题是网络应用只有一个 URL。

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

docker run -d -p <WEB_APP_PORT>:<UI_PORT> --name ... -e ... <IMG>

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

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

对于上下文:

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

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

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

  4. 我正在努力实现的图表:

【问题讨论】:

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


    【解决方案1】:

    不,您不能使用“用于容器的 Azure Web 应用程序”做您想做的事情,该平台允许您运行单个容器映像,该映像仅映射到一个 URL,并且您只能导出 Web 端口(80、443 ) 到世界,通过 SSH (2222) 到它们的内部“kudzu”服务。

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

    但是,您可以通过内部运行“映射服务”来完成它,例如 Nginx 代理,它将“/”发送到 localhost:8080 UI 和 /api 到 localhost:5000 Spring API,或任何技术传统上用于单页应用程序“路由”。

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

    【讨论】:

    • 如果仅限于将 Azure Web 应用程序用于容器,那么拥有 nginx 代理是一个有用的建议。我选择在这个项目中使用 ACS。干杯。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    相关资源
    最近更新 更多