【问题标题】:running bokeh on shinyproxy using docker使用 docker 在 shinyproxy 上运行散景
【发布时间】:2019-11-18 16:39:25
【问题描述】:

我们使用 shinyproxy 来托管和运行我们的应用程序。到目前为止,我们只部署了 R Shiny 应用程序,现在我也想尝试散景。

这通常是可能的还是只适用于破折号?

作为我使用的 docker 的入口点:

#!/bin/bash
set -e
cd /bokeh-app
exec /opt/conda/bin/bokeh serve . \
--port 81 \
--address 0.0.0.0 \
--use-xheaders \
--allow-websocket-origin=*

在 docker 中,入口点位于 /usr/local/bin/entrypoint.sh

在 .yml 文件中,我将应用程序的链接(根据规范)指定为:

  - id: bokeh_test_app
    display-name: Bokeh Test App
    container-image: bokeh-test-app:latest

关于container-cmd,我不确定如何通过入口点或命令启动容器。我猜

container-cmd: ["sh", "usr/local/bin/entrypoint.sh"]

错了。当我启动 shinyproxy 时,我得到了错误

Container unresponsive

任何帮助表示赞赏!

【问题讨论】:

  • shinyproxy 是否处理代理 websockets? (只是一个随机猜测,因为我对shinyproxy 一无所知,我们使用Docker 和Elastic Beanstalk 来部署Bokeh demo site,但是您使用的任何代理都需要能够处理websocket。)
  • 过去我使用 docker 镜像文件运行 Bokeh 服务器。在Dockerfile 的末尾,您需要像在入口点文件中一样启动服务器 + 您需要公开 Bokeh 正在使用的端口(例如 EXPOSE 81)。然后使用 -p 5006:81(端口映射)选项运行 Docker,您可以在其中引用内部 Bokeh 端口
  • 谢谢。我没有展示那部分,但是已经包含了 EXPOSE 和端口映射。如果我单独启动包含散景应用程序的 docker,它也没有问题。我认为它要么是闪亮代理中的调用有些错误,要么闪亮的代理根本没有处理散景。根据openanalytics.eu/blog/2018/03/25/shinyproxy-1.1.0,一个破折号python代码可以称为docker-cmd: ["python", "app.py"]
  • 好的一个问题是,shinyproxy 在内部使用端口 3838,而端口 81 是为 shinyproy 保留的,所以我不得不为散景应用程序从端口 81 切换到 3838。我现在使用映射 81:8080 来访问 shinyproxy 页面。散景容器启动,在 3838 内部运行,然后通过闪亮代理映射。现在容器启动了,但出现 404 错误。
  • 3838端口是可配置的,所以你也可以在应用规范中定义port: 81。对于container-cmd,您不必指定它,如果您的 Dockefile 中有CMD(我猜ENTRYPOINT 应该也可以)您也可以在support.openanalytics.eu 上发布更多详细信息,例如可重现的示例(包括 Dockerfile)

标签: docker bokeh shinyproxy


【解决方案1】:

我的一位同事喜欢这个解决方案: Bokeh 添加了应用程序所在位置的文件夹名称,shinyproxy 无法找到该文件夹​​名称。因此,需要将散景应用程序的主文件复制到 /root。 在 docker 中,我通过以下方式将应用程序复制到容器中:

COPY bokeh_test/* /bokeh_test/

但应该是:

COPY bokeh_test/* /

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多