【问题标题】:How to point iframe to a url within a docker network?如何将 iframe 指向 docker 网络中的 url?
【发布时间】:2019-04-11 09:02:20
【问题描述】:

我有两个 docker 容器:

  • web,包含带有一些静态 html 的 nginx
  • shiny,包含一个 R Shiny Web 应用程序

运行时,闪亮的网络应用程序可通过主机上的 localhost:3838 访问,而静态 html 站点可通过 localhost:80 访问。

我的目标是通过 docker-compose 制作一个多容器应用程序,其中 用户访问静态 html,静态 html 偶尔通过<iframe src="url-to-shiny-application"></iframe> 从shiny 获取数据可视化

我不知道如何将 iframe 指向源自 docker-compose 网络的 url。大多数人倾向于将他们的 Shiny 应用程序托管在可通过 Internet 访问的 url(即 shinyapps.io)上,作为一个学习项目,我想找出一种在 nginx 旁边托管容器化闪亮服务器的方法。

期望的结果是能够在静态 html 中简单地写入 <iframe src="shiny-container/app_x"></iframe>,并且它会通过 docker 网络在闪亮的服务器上找到 app_x。

这个是不是可以通过nginx配置来解决?

【问题讨论】:

    标签: r docker nginx shiny


    【解决方案1】:

    你试过这个吗:https://docs.docker.com/compose/networking/?

    给出的示例 docker-compose 文件:

    version: "3"
    services:
      web:
        image: web
        ports:
          - "8000:8000"
      shiny:
        image: shiny
        ports:
          - "3838:3838"
    

    现在每个容器都可以查找主机名 web 或 shiny 并取回相应容器的 IP 地址。

    并使用<iframe src="http://web:8000"/> 或端口 80、8080 或您在 docker 文件中配置的内容。

    【讨论】:

    • 浏览器不知道这些 Docker 网络的任何东西都在背后进行;您通常不能在将发送到浏览器的 URL 中使用 Docker 内部主机名。
    【解决方案2】:

    答案已经在你的问题中了:

    可以通过主机上的 localhost:3838 访问闪亮的 Web 应用程序

    所以 URL 以 http://localhost:3838 开头。如果您需要从其他主机访问它,或者您希望发布的端口号可能会更改,您需要传递一个配置选项来说明外部 URL 的实际含义,或者在两者前面建立一个代理其他可以进行基于路径的路由的容器。

    最终,您在<iframe src="...">、<a href="..."> 等中输入的任何 URL 都会在浏览器中进行解释,而浏览器不会在 Docker 中运行。这意味着在 HTML 内容中对可能在 Docker 容器中运行的事物的引用总是需要使用主机的主机名和发布的端口号;他们永远不能使用 Docker 内部的主机名。

    【讨论】:

    • 谢谢你,让我更近了一步。我正在尝试通过 Azure Web App for Containers 发布,看起来他们只让我公开一个端口,所以我无法访问 localhost:3838 上的闪亮应用程序。
    【解决方案3】:

    您可能对“服务器端包含”感兴趣,以便将微服务的 Web UI 嵌入到您的网页中: https://developer.okta.com/blog/2019/08/08/micro-frontends-for-microservices#micro-frontends-to-the-rescue%EF%B8%8F%EF%B8%8F

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      相关资源
      最近更新 更多