Docker容器中的R应用程序:无法下载PDF报告(错误:没有此类文件或目录)Knitr/Rmarkdown

Docker容器中的R应用程序:无法下载PDF报告(错误:没有此类文件或目录)Knitr/Rmarkdown,r,docker,markdown,r-markdown,knitr,R,Docker,Markdown,R Markdown,Knitr,我一直在为docker应用程序构建docker容器,并且在下载PDF报告时不断遇到错误。PDF report函数在本地机器上的R中运行良好,但是当容器化时,它会抛出下面的错误。我已经尝试强制安装特定的软件包,如其他问题所提到的Knitr和Rmarkdown,但是它仍然显示相同的错误。Chrome下载中的文件只是说“失败-服务器问题”。我已经使用该应用程序测试了CSV文件的下载,效果很好,因此我认为生成和下载降价PDF报告存在问题 我已经包括了构建Dockerfile以提供帮助。任何建议都将是惊人

我一直在为docker应用程序构建docker容器,并且在下载PDF报告时不断遇到错误。PDF report函数在本地机器上的R中运行良好,但是当容器化时,它会抛出下面的错误。我已经尝试强制安装特定的软件包,如其他问题所提到的Knitr和Rmarkdown,但是它仍然显示相同的错误。Chrome下载中的文件只是说“失败-服务器问题”。我已经使用该应用程序测试了CSV文件的下载,效果很好,因此我认为生成和下载降价PDF报告存在问题

我已经包括了构建Dockerfile以提供帮助。任何建议都将是惊人的

谢谢

DOCKERFILE:

FROM openanalytics/r-base

MAINTAINER ________

# system libraries of general use
RUN apt-get update && apt-get install -y \
    sudo \
    pandoc \
    pandoc-citeproc \
    libcurl4-gnutls-dev \
    libcairo2-dev \
    libxt-dev \
    libssl-dev \
    libssh2-1-dev \
    libxml2-dev \
    libssl1.0.0 \
    libpq-dev \
    git \
    texlive-full \
    html-xml-utils \
    libv8-3.14-dev

# system library dependency for the app

RUN apt-get update

# install packages for R

RUN R -e "install.packages(c('hms','devtools'), repos='https://cloud.r- 
project.org/')"

RUN R -e "require(devtools)"

RUN R -e "install.packages(c('car'), repos='https://cloud.r-project.org/')"

RUN R -e "devtools::install_version('readxl', version = '1.0.0', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('DT', version = '0.2', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('shinydashboard', version = '0.6.1', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('knitr', version = '1.18', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('magrittr', version = '1.5', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('ggrepel', version = '0.7.0', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('dplyr', version = '0.7.4', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('Rcpp', version = '0.12.14', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('rhandsontable', version = '0.3.4', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('shinyjs', version = '0.9.1', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('V8', version = '1.5', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('data.table', version = '1.10.4-3', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('packrat', version = '0.4.8-1', 
repos='https://cloud.r-project.org/')"
RUN R -e "devtools::install_version('zoo', version = '1.8-1', 
repos='https://cloud.r-project.org/')"
RUN R -e "install.packages('shiny', repos='https://cloud.r-project.org/')"
RUN wget https://github.com/rstudio/rmarkdown/archive/v1.8.tar.gz
RUN R CMD INSTALL v1.8.tar.gz
RUN R -e "install.packages('xml2', repos='https://cloud.r-project.org/')"
RUN R -e "install.packages('rvest', repos='https://cloud.r-project.org/')"
RUN wget https://cran.r- 
project.org/src/contrib/Archive/kableExtra/kableExtra_0.3.0.tar.gz
RUN R CMD INSTALL kableExtra_0.3.0.tar.gz

# copy the app to the image
RUN mkdir /root/tsk
COPY tsk /root/tsk

COPY Rprofile.site /usr/lib/R/etc/

EXPOSE 3838

CMD ["R", "-e", "shiny::runApp('/root/tsk')"]
DOCKER出错:

Listening on http://0.0.0.0:3838
Warning in normalizePath(path, winslash = winslash, mustWork = mustWork) :
  path[1]="/tmp/RtmpMu8ezy/TSK.Rmd": No such file or directory
Warning: Error in tools::file_path_as_absolute: file '/tmp/RtmpMu8ezy/TSK.Rmd' 
does not exist
  [No stack trace available]
Warning in normalizePath(path, winslash = winslash, mustWork = mustWork) :
  path[1]="/tmp/RtmpMu8ezy/TSK.Rmd": No such file or directory
Warning: Error in tools::file_path_as_absolute: file '/tmp/RtmpMu8ezy/TSK.Rmd' 
does not exist
  [No stack trace available]
Warning in normalizePath(path, winslash = winslash, mustWork = mustWork) :
  path[1]="/tmp/RtmpMu8ezy/TSK.Rmd": No such file or directory
Warning: Error in tools::file_path_as_absolute: file '/tmp/RtmpMu8ezy/TSK.Rmd' 
does not exist
  [No stack trace available]

简单地将文件名大小写从tsk.Rmd改为tsk.Rmd——原因是测试总是在OSX上的IDE中进行,不会引发任何错误,但是在使用区分大小写的Ubuntu构建容器时,它无法找到标记文件


使用不同的操作系统构建时,请确保检查系统是否区分大小写!一个容易犯的错误

我不清楚
TSK.Rmd
从何而来。这是你正在安装的软件包中的一个吗?你好,谢谢你的回复。Rmd是用于呈现PDF的R标记表。它包含在所有R项目文件所在的文件夹中。docker容器应在容器中包含此文件。至少我是这么想的。好吧,但是唯一可以接近的
Dockerfile
行是
COPY tsk/root/tsk
,它不是
/tmp/Rtmp…/tsk.Rmd
。我只是无法复制它的原貌。(顺便说一句:除非你检查返回值并利用这些知识做些什么,否则不要使用
require(pkgname)
;如果你不打算检查
require
returned
TRUE
),那么就使用
library(pkgname)
)看看PNADOC是否有问题……你能在社区中检查一下吗,感谢您提供有关require/library的提示,我们将更新我的dockerfile。我设法解决了这个问题!它只是简单地将文件名大小写从tsk.Rmd改为tsk.Rmd——原因是测试总是在OSX上的IDE中进行,不会引发任何错误,但是在使用区分大小写的Ubuntu构建容器时,它无法找到标记文件。。全部固定:)