Как я могу сделать приложение Shiny в Docker'е в обертке flexdashboard с големом? - PullRequest
1 голос
/ 07 октября 2019

Можно ли сделать блестящее приложение с flexdashboard в виде пакета с пакетом Голема Open Analytics? Можно ли докеризовать его потом? Как продвигается рабочий процесс из файла 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в спецификациях приложений, как упомянуто здесь: Развернуть приложение Shiny с Flexdashboard и вместо этого запустить блестящий сервер с помощью стандартной команды оболочки? Спасибо Винсент за Docktorrent, попробую сейчас!

1 Ответ

0 голосов
/ 28 октября 2019

Примечание: {golem} не является пакетом Open Analytics.

Чтобы ответить на вопрос «Можем ли мы развернуть flexdashboard с големом», да:

Лучший способ достичь того, что вы намереваетесь сделать, это поместить свой Rmd в inst/ и изменить run_app таким образом:

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

Обратите внимание, что для Docker вам нужно добавить library(mypackage) в верхней части Rmd, если вам нужны функции из mypackage.

Таким образом, вы можете использовать функцию mypackage :: run_app () в качестве CMD для вашего файла Docker.

Также обратите внимание, что {golem} поставляется с функцией add_dockerfile(), которая объединит все необходимое для установки приложения. Но это не будет связывать блестящий сервер внутри него.

См .: https://rtask.thinkr.fr/shinyapp-runapp-shinyappdir-difference/, особенно часть, называемая RSTUDIO PRODUCTS 2/2: НАСТРОЙКА БЛЕСКОГО СЕРВЕРА ДЛЯ ТЕСТИРОВАНИЯ, для примера Dockerfile, устанавливающего приложение голема + блестящий сервер.

Колин

...