【问题标题】:Cron not runing a docker container which starts a python script [closed]Cron没有运行启动python脚本的docker容器[关闭]
【发布时间】:2021-08-15 10:29:48
【问题描述】:

我有一个加载 python 图像的 docker 容器。然后我正在运行一个通过Dockerfile 复制到 docker 容器的 python 脚本,如下所示:

docker run --net=host mybuiltimage /bin/bash -c "python src/runscript.py"

此命令直接从终端运行。为了让它通过 cron 工作并输出到日志文件,我做了一些更改:

* * * * * cd /dir/to/dockerfile && /usr/bin/docker run --net=host mybuiltimage /bin/bash -c "python src/runscript.py" >> /dir/to/log/mylog.log 2>&1

这里的变化是我将目录更改为 Dockerfile 目录并明确给出 docker 命令的完整路径。

此 cronjob 仍未执行。 mylog.log 未在给定目录中创建。 这有什么问题?

【问题讨论】:

  • 尝试使用带有分离标志 (-d) 的 docker run
  • 仍未执行
  • 为什么需要 cd 到带有 dockerfile 的目录?为什么在使用 docker run 时引用的是容器而不是图像?
  • 我正在引用从 Dockerfile 构建的映像 mycontainer 只是我输入的占位符名称,它具有误导性......现在已编辑。现在我意识到我不需要 cd 进入目录。这只是我的一种习惯,因为我通常在run 之前使用build,这确实需要cd 到目录。仍然没有解决我的问题。

标签: python docker shell cron


【解决方案1】:

创建一个脚本文件可能很有用,比如/dir/to/script/myscript.sh

#!/bin/bash

/usr/bin/docker run --net=host mybuiltimage /bin/bash -c "python src/runscript.py" >> /dir/to/log/mylog.log 2>&1

你应该可以测试脚本文件了:

$ bash /dir/to/script/myscript.sh
$ cat /dir/to/log/mylog.log

然后在cron文件中:

* * * * * bash /dir/to/script/myscript.sh

【讨论】:

  • 这帮助我确定了实际问题:日志文件的路径错误。我无法直接从 cronjob 中得到这个错误。作为一个向前发展的调试工具,这总是很有帮助的。
猜你喜欢
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
  • 2018-05-16
  • 1970-01-01
  • 2021-08-04
  • 1970-01-01
  • 2018-05-20
  • 2021-12-13
相关资源
最近更新 更多