gpt4 book ai didi

r - 多个 Dockerfile 的一个 R 包文件

转载 作者:行者123 更新时间:2023-12-03 16:58:34 26 4
gpt4 key购买 nike

我建了两个 Docker 镜像之一是我的 rstudio 图像和另一个是 cron 图像来运行我的 cronjobs(R 脚本)。
我正在构建其他图像(Shiny 等),它们需要与 cron 图像和 rstudio 图像完全相同的 R 包。
所以我想要一个文件,我可以在其中列出 所有 R 包 这将需要我的不同图像。
我的文件夹的结构如下:

├── cron
│   ├── crontab
│   └── Dockerfile
├── rstudio
│   └── Dockerfile
├── r_packages.txt
例如,对于 Dockerfile 我的 rstudio 我尝试了以下操作:
FROM rocker/tidyverse:3.6.1

## Create directories
RUN mkdir -p /rstudio
RUN mkdir -p /rscripts

RUN cat /home/ec2-user/r_packages.txt
内容为 r_packages.txt 如下:
R -e "install.packages(c('writexl','readxl','rjson','httr','rvest','DBI','RPostgres','stringr','xlsx','knitr','kableExtra','devtools','RSelenium'))"
但我收到以下错误:

cat: /home/ec2-user/r_packages.txt: No such file or directory


因为我假设 r_packages.txt应该与我的 位于同一目录中rstudio Dockerfile 但我希望我的 r_packages 可用于 所有 我的图像,我怎样才能做到这一点?

最佳答案

您需要从项目目录运行 build 命令,而不是 Dockerfiles 所在的位置。原因是 Docker 使用了上下文的概念,它类似于工作目录。 Docker 构建器无法访问上下文目录之外(上方)的文件,但它可以查看子目录。当您使用 Dockerfile 更改目录中的上下文时,您必须指定要使用的 Dockerfile。例如,要构建您必须运行的 cron 镜像:docker build -t cron_image_tag -f cron/Dockerfile /directory/with/r_packages.txt修复 cat: /home/ec2-user/r_packages.txt: No such file or directory错误你必须再做一件事。当您使用 RUN ,您在构建容器内运行该命令。容器不会有 r_packages.txt除非您明确添加文件。将您的 Dockerfile 更改为此以解决此问题:

FROM rocker/tidyverse:3.6.1

COPY r_packages.txt /r_packages.txt
RUN cat /r_packages.txt

关于r - 多个 Dockerfile 的一个 R 包文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64739579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com