我正在尝试为一个闪亮的应用程序构建一个Dockerfile。正在使用的包: shiny、ggplot2。应用程序(app.R)将使用以下命令"Rscript app_run.R“通过app_run.R文件运行。
我使用了一个摇杆容器,但我认为这个容器已经安装了各种各样的包。有人知道如何构建一个绝对基本的Dockerfile来运行shinyapp吗?我的Dockerfile中有没有过时的行?
我构建的Dockerfile:
FROM rocker/r-ver:3.5.1
#install necessary libraries
RUN R -e "install.packages(c('ggplot2','shiny'))"
COPY . /usr/local/src/app
WORKDIR /usr/local/src/app
CMD ["Rscript","app_run.R"]非常感谢。
发布于 2018-08-10 23:47:27
在我看来,你的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"]如果没有所有的开发包,这可能会更小。
https://stackoverflow.com/questions/51787640
复制相似问题