首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shinyapp的Dockerfile

shinyapp的Dockerfile
EN

Stack Overflow用户
提问于 2018-08-10 21:27:40
回答 1查看 460关注 0票数 0

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

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

我构建的Dockerfile:

代码语言:javascript
复制
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"]

非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 23:47:27

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

代码语言:javascript
复制
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"]

稍后我可以使用

代码语言:javascript
复制
docker run -p 3838:3838 <shiny_image>

该应用程序将在http://localhost:3838上提供。

如果你想要小一点的,你可以用

代码语言:javascript
复制
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"]

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51787640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档