收到 Docker 运行 错误文件不存在或不可读。 getwd()=='/'?
Getting Docker run error File does not exist or is non-readable. getwd()=='/'?
我在 运行 docker run ...
时遇到与读取文件相关的错误,而闪亮的应用程序在 Rstudio 中运行良好。
所有数据(输入表)、闪亮的应用程序 .R 文件和 Docker 文件都在同一文件夹中。
我在 docker 运行:
中出错的闪亮应用程序的第一行
gene<-data.frame(data.table::fread('PCR_Gene_CP.GZ.csv'))
和Docker文件是:
# get shiny packages image
FROM rocker/shiny:latest
#system libraries of general use
## install debian packages
RUN apt-get update -qq && apt-get -y --no-install-recommends install libxml2-dev libcairo2-dev
libsqlite3-dev libmariadbd-dev libpq-dev libssh2-1-dev unixodbc-dev libcurl4-openssl-dev libssl-dev
## update system libraries
RUN apt-get update && apt-get upgrade -y && apt-get clean
# install R packages required
# (change it dependeing on the packages you need)
RUN R -e "install.packages(pkgs=c('shiny','ggplot2','data.table','DT','dplyr','tidyr','tibble','VennDiagram'), repos='http://cran.rstudio.com/')"
COPY /app.R /app.R
# expose port
EXPOSE 3838
# run app on container start
CMD ["R", "-e", "shiny::runApp('/app.R', host = '0.0.0.0', port = 3838)"]
运行 Docker 构建,运行 和日志:
docker build -t enhancer .
docker run -p 8081:3838 --name enhancer -d enhancer
docker logs -t enhancer
你的大部分 Dockerfile 都在进行包安装(来自 Linux 或者我假设是 R 模块的存储库)。您从自己的代码目录中唯一复制的是这个文件:
COPY /app.R /app.R
由于 csv 文件未复制到图像中,因此它不存在,因此您的应用程序无法打开它。
如果你只需要一个数据文件,你可以通过改变你的复制行来解决这个问题:
COPY app.R PCR_Gene_CP.GZ.csv /
这会将 R 文件和 cvs 文件都复制到图像中的 /
。
如果其他数据文件(或其他任何东西)必须在图像中,您可以在那里添加更多文件。您也可以复制所有内容:
COPY . /
或者您可以使用各种通配符来匹配多个文件。可以在此处找到更多文档:
我在 运行 docker run ...
时遇到与读取文件相关的错误,而闪亮的应用程序在 Rstudio 中运行良好。
所有数据(输入表)、闪亮的应用程序 .R 文件和 Docker 文件都在同一文件夹中。
我在 docker 运行:
中出错的闪亮应用程序的第一行gene<-data.frame(data.table::fread('PCR_Gene_CP.GZ.csv'))
和Docker文件是:
# get shiny packages image
FROM rocker/shiny:latest
#system libraries of general use
## install debian packages
RUN apt-get update -qq && apt-get -y --no-install-recommends install libxml2-dev libcairo2-dev
libsqlite3-dev libmariadbd-dev libpq-dev libssh2-1-dev unixodbc-dev libcurl4-openssl-dev libssl-dev
## update system libraries
RUN apt-get update && apt-get upgrade -y && apt-get clean
# install R packages required
# (change it dependeing on the packages you need)
RUN R -e "install.packages(pkgs=c('shiny','ggplot2','data.table','DT','dplyr','tidyr','tibble','VennDiagram'), repos='http://cran.rstudio.com/')"
COPY /app.R /app.R
# expose port
EXPOSE 3838
# run app on container start
CMD ["R", "-e", "shiny::runApp('/app.R', host = '0.0.0.0', port = 3838)"]
运行 Docker 构建,运行 和日志:
docker build -t enhancer .
docker run -p 8081:3838 --name enhancer -d enhancer
docker logs -t enhancer
你的大部分 Dockerfile 都在进行包安装(来自 Linux 或者我假设是 R 模块的存储库)。您从自己的代码目录中唯一复制的是这个文件:
COPY /app.R /app.R
由于 csv 文件未复制到图像中,因此它不存在,因此您的应用程序无法打开它。
如果你只需要一个数据文件,你可以通过改变你的复制行来解决这个问题:
COPY app.R PCR_Gene_CP.GZ.csv /
这会将 R 文件和 cvs 文件都复制到图像中的 /
。
如果其他数据文件(或其他任何东西)必须在图像中,您可以在那里添加更多文件。您也可以复制所有内容:
COPY . /
或者您可以使用各种通配符来匹配多个文件。可以在此处找到更多文档: