适用于Shinyapp的Dockerfile

时间:2018-08-10 13:27:40

标签: r shiny dockerfile

我正在尝试为一个闪亮的应用程序构建一个Dockerfile。正在使用的软件包:Shiny,ggplot2。使用以下命令“ Rscript app_run.R”,将通过app_run.R文件运行该应用程序(app.R)

我使用了一个摇杆容器,但是我认为它已经安装了各种软件包。有人知道如何构建一个绝对基本的Dockerfile来运行Shinyapp吗? Dockerfile中是否有任何过时的行?

我构建的Dockerfile:

ERROR in ./node_modules/redis-parser/lib/hiredis.js
Module not found: Error: Can't resolve 'hiredis' in 'C:\Users\Dennis\git\keep-tabs\node_modules\redis-parser\lib'

非常感谢。

1 个答案:

答案 0 :(得分:3)

从我的角度来看,您的Dockerfile仅存在一个小问题:可以在哪个端口上运行闪亮的应用程序?默认情况下,shiny使用随机端口,当您运行docker容器并希望将某个单独的端口从容器映射到主机时,这并不是真正有用。我通常这样使用端口3838

FROM rocker/r-ver:3.5.1
#install necessary libraries
RUN R -e "install.packages(c('ggplot2','shiny'))" \
 && echo 'options(shiny.port = 3838, shiny.host = "0.0.0.0")' >> /usr/local/lib/R/etc/Rprofile.site \
 && rm -rf /tmp/*

EXPOSE 3838

COPY . /usr/local/src/app
WORKDIR /usr/local/src/app
CMD ["Rscript","app_run.R"]

以后我可以使用

docker run -p 3838:3838 <shiny_image>

,该应用将在http://localhost:3838上可用。

如果您想要更小的东西,可以使用

FROM debian:buster-slim

RUN apt-get update \
 && apt-get install --yes --no-install-recommends \
            r-cran-shiny r-cran-ggplot2 \
 && echo 'options(shiny.port = 3838, shiny.host = "0.0.0.0")' >> /etc/R/Rprofile.site \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*

EXPOSE 3838

COPY . /usr/local/src/app
WORKDIR /usr/local/src/app
CMD ["Rscript","app_run.R"]

如果没有所有开发包,则可能会更小。