【问题标题】:Running Shinyapp in Docker without Shiny server在没有 Shiny 服务器的 Docker 中运行 Shinyapp
【发布时间】:2018-05-22 20:37:43
【问题描述】:

我正在尝试在 Docker 中运行一个闪亮的应用程序,我看到了两种方法:

1) 在 Docker 中运行 Shiny 服务器,然后在该服务器上运行 Shiny 应用程序。它可以工作,但我仍在努力让用户目录从 Shiny 应用程序中可见(使用 -v 参数进行简单安装没有帮助)。

2) 使用命令R -e "shiny::runApp('/srv/shiny-server/')" 直接在 Docker 上运行 Shiny。在这种情况下,它几乎可以工作,但我收到了这个错误:

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 shiny


    【解决方案1】:

    在您的第二种方法中,R 进程尝试在 docker 容器打开浏览器,因为它认为它是交互式使用的。一个简单的改变方法是使用Rscript -e ... 而不是R -e ...。或者,您可以将 launch.browser 参数设置为 FALSE

    此外,您应该将闪亮的应用程序绑定到任何 IP 地址上的固定端口,并在启动 docker 容器时将该端口发布到主机。您可以使用参数port = 3838host = "0.0.0.0" 来做到这一点。

    除了通过参数指定这些东西,您还可以通过添加来使用 R 的选项机制

    options(shiny.port = 3838, shiny.host = "0.0.0.0", shiny.launch.browser = FALSE) 
    

    Rprofile.site

    【讨论】:

    • 谢谢!向命令添加端口和主机有效,我现在可以在浏览器中打开闪亮的应用程序。但是,仍然无法从应用程序访问任何目录。我在运行 docker 容器时使用 -v 参数,但在应用程序中我可以看到空的主目录“/srv/shiny-server”文件夹。您对如何修复它有任何建议吗?谢谢!
    • 我试过这个:docker run --rm -p 3838:3838 -v /Users/svetlana/Downloads/magic/shiny/MagicWeb/:/srv/shiny-server/ -v /Users/svetlana/Downloads/magic/data/:/srv/shiny-server/data/ three_test
    • @kintany 乍一看似乎是对的,但我隐约记得mac上的docker可能与我习惯的linux环境有很大的不同。标准容器也会出现同样的问题吗?
    • 是的,它不是 Mac 特有的,但我已修复,谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多