【发布时间】: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