【问题标题】:How can I make a dockerized Shiny app in a flexdashboard wrapper with golem?如何使用 golem 在 flexdashboard 包装器中制作 dockerized Shiny 应用程序?
【发布时间】:2020-02-04 12:35:28
【问题描述】:

是否可以使用 Open Analytics golem 包将 flexdashboard 作为一个包制作一个闪亮的应用程序? 之后可以dockerize吗? flexdashboard .Rmd 文件的工作流程如何?

到目前为止我的 Dockerfile

FROM rocker/shiny-verse:latest 

MAINTAINER Tim M.Schendzielorz "tim.schendzielorz@googlemail.com"

# Install dependencies 

RUN  echo 'install.packages(c("dplyr","dbplyr","DBI","DT","plotly","flexdashboard","lubridate"), \
        repos="http://cran.us.r-project.org", \
        dependencies=TRUE)' > /tmp/packages.R \
        && Rscript /tmp/packages.R


# Copy configuration files into the Docker image
COPY shiny-server.conf  /usr/bin/shiny-server.conf
COPY shiny-server.sh  /usr/bin/shiny-server.sh

COPY flexdashboard.Rmd /usr/bin/flexdashboard.Rmd   

# make all app files readable (solves issue when dev in Windows, but building in Ubuntu)
RUN chmod -R 755 /usr/bin

# Add shiny user
RUN groupadd  user \
&& useradd --gid user --shell /bin/bash --create-home user

EXPOSE 3838



CMD ["R", "-e rmarkdown::run('/usr/bin/flexdashboard.Rmd')"]

我是 Docker 新手,看来我需要将命令添加到应用程序规范中的 rmarkdown::run 中,如下所述:Deploy Shiny app with Flexdashboard 并使用标准 shell 命令启动闪亮服务器? 感谢 Vincent 提供 docktorrent,现在就试试吧!

【问题讨论】:

  • 事实上,这个问题不适合 StackOverflow 格式,很可能会被关闭。 (太开放,多个问题,没有以前尝试的报告,没有可重现的代码)。尽管您在诸如 community.rstudio.com 之类的论坛上可能会有更好的运气,这样可以进行此类讨论。注意:golem 主要由 ThinkR 制作,而 Open Analytics 制作 ShinyProxy
  • 嗨,看看这篇文章(使用英语自动翻译)并调整运行函数以使用 rmardown::run()。这几天我会在github上放一些东西,举个例子。thinkr.fr/dockeriser-application-shiny
  • 我在这里添加一个示例:github.com/VincentGuyader/docktorrent,这是针对runtime: shiny_prerendered,但您可以调整功能
  • 2020-29-01 更新:我最终在没有 golem 的情况下通过 Docker 和 Shinyproxy 部署了 Flexdashboard,但我将尝试下一个项目。你可以查看我在这里使用的 Dockerfile:medium.com/analytics-vidhya/…

标签: r docker shiny dockerfile flexdashboard


【解决方案1】:

请注意,{golem} 不是 Open Analytics 软件包。

回答“我们可以用 golem 部署 flexdashboard”,是的:

实现你想要做的最好的方法是将你的 Rmd 放在 inst/ 中,然后修改 run_app 这样:

run_app <- function(...) {
  rmarkdown::run(
    system.file("md.Rmd", package = "mypackage")
  )
}

请注意,对于 Docker,如果您需要来自 mypackage 内部的函数,则必须在 Rmd 顶部添加 library(mypackage)

这样,您可以使用 mypackage::run_app() 函数作为 Docker 文件的 CMD。

另外,请注意{golem} 带有一个add_dockerfile() 函数,它将捆绑安装应用程序所需的一切。但这不会在其中捆绑闪亮的服务器。

请参阅:https://rtask.thinkr.fr/shinyapp-runapp-shinyappdir-difference/,尤其是名为 RSTUDIO PRODUCTS 2/2: SETTING A SHINY SERVER FOR TESTING 的 Dockerfile 设置 golem 应用程序 + 闪亮服务器的示例。

科林

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2020-06-24
    • 2023-02-07
    • 2022-08-15
    • 2021-07-08
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    相关资源
    最近更新 更多