fileInput не работает должным образом с системой Windows Docker - PullRequest
0 голосов
/ 02 июля 2019

Я довольно новичок в Docker и мне нужно разместить приложение R Shiny на Docker. Любая помощь будет оценена. Пожалуйста, дайте мне знать, если мне нужно что-то изменить в DOckerFile.

R ShinyApp прекрасно работает на локальном компьютере, но падает при использовании Docker для его размещения. Я подозреваю, что что-то не так с взаимодействием fileInput $ datapath и Windows / Docker. Нужно ли указывать PATH в DockerFile?

Я использовал образ рокера / стиха из Docker Hub, установил библиотеки вручную и сохранил изображение локально на моем компьютере как 'r_all_libraries_july2' Это изображение, которое я использовал в своем DockerFile.

Блестящий код хорошо работает в среде Linux. Но происходит сбой при запуске докера в среде Windows. Временный файл также создается в производственной среде, когда файл вводится в Shiny App с использованием fileInput.

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"

...