【问题标题】:unable to run R script in crontab in docker container无法在 docker 容器的 crontab 中运行 R 脚本
【发布时间】:2020-02-06 08:53:20
【问题描述】:

我正在尝试在 docker 容器中运行 R 脚本。这是一个例子。

我的工作目录如下所示。

myRDocker
  -dockerfile
  -scripts
     -save_iris.R

在目录myRDocker中,有一个dockerfile和一个目录scripts,其中包含一个R脚本save_iris.R

我的 R 脚本 save_iris.R 如下所示:

write.csv(iris, '/data/iris.csv')

我的 dockerfile 如下:

# Install R version 3.6
FROM r-base:3.6.0

#install crontab
RUN apt-get update && apt-get -y install cron

RUN mkdir /data
COPY /scripts  /scripts

我去了我的目录myRDocker 并构建了 docker 镜像

docker build -t baser .

我在 bash 中运行 docker 容器。

docker run -it baser bash

进入容器后,我做到了:

crontab -e

然后添加这一行,然后保存

* * * * * Rscript /scripts/save_iris.R

它应该每分钟将文件保存到文件夹/data。但是,我从未在容器内的数据文件夹中找到任何文件。

我的问题是:

  1. 我在上述过程中做错了什么?我觉得我可能遗漏了一些东西......但不知道为什么......

  2. 如果我想在容器启动时运行计划的 cron 任务,我应该怎么做。 (类似于将 cron 任务放在一个文件中,并在容器启动时运行......)

【问题讨论】:

  • 也许列出 crontab 下“RScript”的完整路径?你到底想在 crontab 中运行什么?安排保存虹膜似乎效率低下?是否要改为运行 docker 文件?
  • 您可能会发现这很有用:stackoverflow.com/questions/37458287/…

标签: r docker cron cron-task


【解决方案1】:

为什么您不在容器运行时启动 cronjob,而不是在容器启动后运行?另外,我认为 crontab 进程不会在您的情况下运行,因为您的容器没有做任何事情。

试试这个,它将在容器运行时启动cron,并且还会跟踪 cron 作业的日志。但请记住,在这种情况下,您的主要进程是 tail -f /var/log/cron.log 而不是 cron 进程。

 FROM r-base:3.6.0

 RUN apt-get update &&  apt-get -y install cron

 RUN touch /var/log/cron.log
 COPY hello.r /hello.r
 RUN (crontab -l ; echo "* * * * * Rscript /hello.r  >> /var/log/cron.log") | crontab

# Run the command on container startup
 CMD cron && tail -f /var/log/cron.log

所以你会得到 Rscript 控制台日志到容器标准输出。

你好.r

print("Hello World from R")

【讨论】:

  • 感谢您的帮助!我试图将RUN cron 放入 dockerfile 中,但没有成功。您的CMD cron 有效。为什么RUN cron 不起作用?
  • RUN cron 只在构建时运行,所以你需要一些在运行时运行的东西
  • 在这种情况下,CMD cronCMD /etc/init.d/cron start 似乎没有在运行时启动 cron。我需要在 bash 中进入容器并执行 /etc/init.d/cron start ,然后 cron 启动。你知道为什么吗? @Adiii
  • CMD cron && tail -f /var/log/cron.log 这在我测试时应该可以工作
  • 对不起。我的意思是在我的情况下。如果您在帖子中获取 dockerfile 并添加 cmd 行 ‘cmd /etc/init.d/cron start’ 构建映像,在 bash 中运行容器。我检查了。 Cron 没有启动
猜你喜欢
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
相关资源
最近更新 更多