是否可以将Flexdashboard与Open Analytics golem软件包一起制作为 Shiny 的应用程序?
之后可以将其 docker 化吗?
flexdashboard.Rmd文件的工作流程如何?
到目前为止我的Dockerfile
FROM rocker/shiny-verse:latest
MAINTAINER Tim M.Schendzielorz "[email protected]"
# 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命令启动 Shiny 的服务器?
谢谢Vincent提供的docktorrent,请立即尝试!
最佳答案
仅说明一下,{golem}
不是Open Analytics软件包。
要回答“我们可以用golem部署flexdashboard”,是的:
实现您打算执行的操作的最佳方法是将Rmd放入inst/
中,然后以这种方式修改run_app
:
run_app <- function(...) {
rmarkdown::run(
system.file("md.Rmd", package = "mypackage")
)
}
请注意,对于Docker,如果需要
library(mypackage)
内部的功能,则必须在Rmd的顶部添加mypackage
。这样,您可以将mypackage::run_app()函数用作Docker文件的CMD。
另外,请注意
{golem}
带有add_dockerfile()
函数,该函数将 bundle 安装应用程序所需的所有内容。但这不会将 Shiny 的服务器 bundle 在其中。请参阅:https://rtask.thinkr.fr/shinyapp-runapp-shinyappdir-difference/,尤其是称为RSTUDIO PRODUCTS 2/2的部分:设置用于测试的发光服务器,以Dockerfile设置golem应用程序+发光服务器的示例。
科林