fileInput无法在Docker Windows系统上正常工作

时间:2019-07-02 18:25:18

标签: r docker file-io shiny

我对Docker并不陌生,需要在Docker上托管R Shiny App。任何帮助,将不胜感激。请让我知道是否需要更改DOckerFile中的某些内容。

R ShinyApp在本地计算机上运行良好,但在使用Docker托管时崩溃。我怀疑fileInput $ datapath和Windows / Docker交互有问题。我需要在DockerFile中指定PATH吗?

我使用了来自Docker Hub的Rocker / verse映像,手动安装了库并将映像本地存储为“ r_all_libraries_july2” 这是我在DockerFile中使用的图像。

Shiny代码在Linux环境中运行良好。但是,在Windows环境中运行docker时崩溃。当使用fileInput在Shiny App中输入文件时,也会在生产环境中创建一个临时文件。

library(shiny)
library(DT)
library(dplyr)
library(shinycssloaders)
library(readxl)
library(shinyjs)
library(ggplot2)
library(png)
library(spatstat)

require(tibble)
require(magrittr)
require(dplyr)
require(multcomp)
require(emmeans)
require(readxl)
library(httr)
require(ggfortify)
library(shinyjs)
library(shinyBS)

ui <-navbarPage(title="RShinyApp", windowTitle = "Data Visualization", theme = shinythemes::shinytheme("cerulean"),selected = "Load Data",
                tabPanel(title="Load Data", #3rd Tab Panel Start,

                         fluidPage(useShinyjs(),
                                   sidebarLayout(
                                     sidebarPanel(
                                       wellPanel(checkboxGroupInput("filetype", "Choose filetype to upload:",
                                                                    choices = c("CSV"="csv", "Excel"="excel"))),

                                       conditionalPanel(condition = "(input.filetype=='csv')|(input.filetype=='excel')",

                                                        wellPanel(checkboxInput(inputId = 'header', label = 'Header', value = FALSE)),

                                                        fileInput(inputId = "file", label = "Upload File", accept = c(".csv",".xlsx"))

                                       ),#End of conditional panel

                                       uiOutput("sheetnames")
                                       #conditionalPanel(condition = "(input.filetype=='excel')&(!is.null(input.file))",uiOutput("sheetnames")),






                                     ),#sidebarpanel

                                     mainPanel(
                                       # h3("Data Table"),
                                       withSpinner(tableOutput("contents"))


                                     )  

                                   )#SideBarLayout


                         )#FluidPage End


                ) #3rd Tab Panel End


)#navbarpage

server <-function(input,output,session){









  ###########Load Data Tab#######################

  rv<-reactiveValues(data=NULL,xlorcsv=NULL,head=FALSE,sheet=NULL,features=NULL)

  observeEvent(input$filetype,{if(input$filetype=='csv'){rv$xlorcsv<-'csv'} 
    else if(input$filetype=='excel'){rv$xlorcsv<-'excel'}})

  observeEvent(input$header, rv$head<-input$header)

  observeEvent(input$sheetnames,rv$sheet<-input$sheetnames)

  observeEvent(input$file,     
               {if((!is.null(rv$xlorcsv))&(!is.null(input$file))){

#####THIS IS WHERE THE SHINY APP IS CRASHING IN DOCKER--my guess is datapath ###########needs to be defined here

                 if(rv$xlorcsv=='csv'){rv$data<-read.csv(input$file$datapath, header = rv$head, na.strings = "")
                                 rv$features<-colnames(rv$data)}


               }
               })

  output$sheetnames<-renderUI({
    if((is.null(rv$xlorcsv))|(is.null(input$file))){return(NULL)}
    if((rv$xlorcsv=='excel')&(!is.null(input$file))){selectInput("sheetnames","Select sheet to load",choices = excel_sheets(path = input$file$datapath))}
  })


  output$contents<-renderTable({rv$data})
}

shinyApp(server=server, ui=ui)

DockerFile:

FROM r_all_libraries:latest
EXPOSE 80
COPY r_shiny_code_working11.R /home/rstudio/r_shiny_code_working11.R
CMD ["/home/rstudio/r_shiny_code_working11.R"]

这是控制台上的错误:

standard_init_linux.go:207: exec user process caused "no such file or directory"

0 个答案:

没有答案