【问题标题】:Crontab that calls python script via docker-compose not executing [duplicate]通过docker-compose调用python脚本的crontab不执行[重复]
【发布时间】:2021-12-30 18:21:06
【问题描述】:

我设置了一个 crontab 来运行从 docker-compose 命令调用的 python 脚本:

* * * * * cd path/to/repo && docker-compose run worker python -c "from directory.module import test_function; test_function()"

模块和 test_function 如下所示:

import logger

def test_function():
    logger.info('Hello')

docker 容器已启动并正在运行。但是,当我去检查我的日志文件时,没有写入任何内容。我不确定我需要做什么才能使其正常工作。

【问题讨论】:

  • 您能否验证作业是否实际运行?您的电子邮件中是否有任何错误?请查看stackoverflow.com/questions/22743548/cronjob-not-running 以获取故障排除说明,并查看edit 以进行相应更新。
  • /var/mail/username中有消息。它说/bin/sh: docker-compose: command not found
  • 那么,你可能需要修复你的PATH

标签: python docker-compose cron


【解决方案1】:

所以,我创建了一个 shell 脚本 (test_cronjob.sh) 来运行我需要的命令。

#!/bin/bash

PATH=/usr/local/bin/
docker-compose -f /full/path/to/docker-compose.yml run worker python -c "from directory.module import test_function; test_function()"

并编辑了我的crontab -e

* * * * * /bin/sh /full/path/to/test_cronjob.sh

或者只是简单地编辑 crontab -e 而不使用 shell 脚本,如下所示:

* * * * * PATH=/usr/local/bin/ docker-compose -f /full/path/to/docker-compose.yml run worker python -c "from directory.module import test_function; test_function()"

【讨论】:

  • 如果您提供到docker-compose 的完整路径,用虚假值覆盖PATH 似乎是错误的,并且可能会破坏您的任何其他cron 工作。明确地说,您应该将此目录添加到默认的PATH,而不是丢失以前的值(/bin:/usr/bin 等对于正常的系统操作非常重要)。
猜你喜欢
  • 1970-01-01
  • 2012-02-02
  • 1970-01-01
  • 2015-10-14
  • 2017-02-05
  • 2012-09-14
  • 1970-01-01
  • 2012-06-10
  • 2020-03-16
相关资源
最近更新 更多