使用Dockerfile进行Dockerizing Shiny-app [英] Dockerizing shiny-app using a Dockerfile

查看:72
本文介绍了使用Dockerfile进行Dockerizing Shiny-app的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用Dockerfile对基本的Shiny-app进行docker化,然后从工作目录中运行 docker build。。我正在查看docker文档,但无法真正用我的Dockerfile代码说出问题。

I want to dockerize a basic shiny-app using a Dockerfile and subsequently running docker build . from the working directory. I am looking at docker docs but cannot really tell the issue with my Dockerfile code.

闪亮的应用程序

## libraries ##
library(data.table)
library(ggplot2)
library(shinydashboard)


## load data ##
google_data <- data.table(Date = c("01/01/2017",
                                   "01/02/2017", 
                                   "01/03/2017"), 
                          AdjClose = c(1200, 
                                       1250, 
                                       1150)) 


## ui.R ##
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Google Stock Price"),
  dashboardSidebar(),
  dashboardBody(plotOutput("google_plot"))
)


## server.R ##
server <- function(input, output) { 
  output$google_plot <- renderPlot({ 
    ggplot(google_data, aes(x = Date, y = AdjClose, group = 1)) +
      geom_line()
  })
}

shinyApp(ui, server)

我的Dockerfile

FROM quantumobject/docker-shiny


LABEL maintainer = "The Greconomist"


COPY app.R /var/wwww/


WORKDIR /var/www/


RUN  R -e "install.packages('gtable', repos='https://cran.rstudio.com/')"
RUN  R -e "install.packages('data.table', repos='http://cran.rstudio.com/')"
RUN  R -e "install.packages('shinydashboard', repos='http://cran.rstudio.com/')"
RUN  R -e "install.packages('ggplot2', repos='http://cran.rstudio.com/')"


EXPOSE 3838

我正在使用/扩展在docker hub中找到的quantumobject / docker-shiny映像。运行 docker build 时,构建成功,但无法执行 docker run [IMAGE]

I am using / extending the quantumobject/docker-shiny image found in docker hub. When running the docker build . the build is successful, but unable to to do a docker run [IMAGE].

docker run [IMAGE] 的结果是:

Starting pre-service scritps in /etc/my_init.d
*** Running: /etc/my_init.d/startup.sh
starting rc.local scritps
*** Running: /etc/rc.local
Booting runit daemon...
Process runsvdir running with PID 178
[2018-03-14 09:40:27.933] [INFO] shiny-server - Shiny Server v1.5.6.875 (Node.js v6.10.3)
[2018-03-14 09:40:27.937] [INFO] shiny-server - Using config file "/etc/shiny-server/shiny-server.conf"
[2018-03-14 09:40:27.982] [INFO] shiny-server - Starting listener on 0.0.0.0:3838

但是访问localhost:3838不会给我任何收益

But accessing localhost:3838 give me nothing

推荐答案

位于 https://github.com/QuantumObject/docker-shiny 也适用于派生图像:您必须告诉docker您想要映射到主机的容器中的3838端口:

The basic usage info for the base image at https://github.com/QuantumObject/docker-shiny applies also to the derived image: You have to tell docker that you want port 3838 from the container mapped to the host:

docker run -p 3838:3838 [IMAGE]

此外,您还应将 app.R 复制到 / srv / shiny-server 。顺便说一句,我将这一步移至 Dockerfile 的末尾,以实现中间映像的缓存。

In addition, you should copy app.R to /srv/shiny-server. BTW, I would move that step to the end of your Dockerfile to make caching of intermediate images possible.

这篇关于使用Dockerfile进行Dockerizing Shiny-app的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆