r - 使用Dockerfile进行Dockerizing Shiny-app

标签 r docker shiny dockerfile

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

Shiny 的应用程序

## 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]
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没有任何帮助
enter image description here

最佳答案

https://github.com/QuantumObject/docker-shiny上基本镜像的基本用法信息也适用于派生镜像:​​您必须告诉docker您想要从映射到主机的容器获取端口3838:

docker run -p 3838:3838 [IMAGE]

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

关于r - 使用Dockerfile进行Dockerizing Shiny-app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49266221/

相关文章:

r - 图片作为 Shiny 仪表板的背景

r - 在 Shiny 中将总计/小计添加到数据表的底部

r - 计算列中连续重复项的数量

r tidyverse spread() 使用多个键值对不折叠行

r - expss表中的百分比不准确

scala - 来自 SBT 的多个 docker 镜像

r - 将数字转换为时间

node.js - 通过Docker运行简单的Node.js时无法找到HelloWorld.js

java - docker 中的 Spring/Hibernate 应用程序不会删除列

R Shiny 显示 checkboxGroupInput 水平