我正在尝试在Docker中运行Shiny应用程序,我看到了两种实现方法:
1)在Docker中运行Shiny服务器,然后在此服务器上运行Shiny app。它可以工作,但我仍在努力使用户目录从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'
我试图安装浏览器(添加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)
到Rprofile.site
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句