我正在尝试在 Docker 中运行一个闪亮的应用程序,我发现有两种方法可以做到这一点:
1)在Docker中运行Shiny服务器,然后在该服务器上运行Shiny应用程序。它有效,但我仍在努力使用户目录从 Shiny 应用程序中可见(使用 -v 参数进行简单安装没有帮助)。
2)使用命令直接在Docker上运行Shiny R -e "shiny::runApp('/srv/shiny-server/')"。在这种情况下,它几乎可以工作,但我收到此错误:
shiny::runApp('/srv/shiny-server/', launch.browser = T)
Loading required package: shiny
Listening on http://127.0.0.1:4637
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: www-browser: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: links2: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: elinks: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: links: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: lynx: not found
/usr/bin/xdg-open: 844: /usr/bin/xdg-open: w3m: not found
xdg-open: no method available for opening 'http://127.0.0.1:4637'
Run Code Online (Sandbox Code Playgroud)
我尝试安装浏览器(添加apt-get install -y firefox到我的 Dockerfile 中),但它仍然不起作用。
我无法找到任何关于如何在没有 Shiny Server 的情况下在 Docker 上运行 Shiny 应用程序的教程/示例。所以我将不胜感激任何帮助!
在第二种方法中,R 进程尝试在docker 容器中打开浏览器,因为它认为它是交互式使用的。改变这一点的一个简单方法是使用Rscript -e ...而不是R -e .... 或者,您可以将launch.browser参数设置为FALSE。
此外,您应该将闪亮的应用程序绑定到任何IP地址上的固定端口,并在启动docker容器时将该端口发布到主机。您可以使用参数port = 3838和来做到这一点host = "0.0.0.0"。
您还可以通过添加来使用 R 的选项机制,而不是通过参数指定这些内容
options(shiny.port = 3838, shiny.host = "0.0.0.0", shiny.launch.browser = FALSE)
Run Code Online (Sandbox Code Playgroud)
到Rprofile.site。
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |