在 docker 中通过 cron 运行时`/bin/sh: 1: python: not found`

2024-02-19

我想在 docker 容器中通过 cron 重复调用脚本,但是当我从一次性执行切换到通过 cron 执行时,官方 python 镜像似乎突然找不到 python。

Dockerfile:

FROM python:3.7-slim

COPY main.py /home/main.py

#A: works
CMD [ "python", "/home/main.py" ]

#B: doesn't work
#RUN  apt-get update && apt-get -y install -qq --force-yes cron
#COPY hello-cron /etc/cron.d/hello-cron
#CMD ["cron", "-f"]

main.py

import time

for i in range(90000):
    print(i)
    time.sleep(5000)

你好-cron:

* * * * * root python /home/main.py > /proc/1/fd/1 2> /proc/1/fd/2
#

当我在 Dockerfile 中将 A 切换为 B 时,错误消息是:/bin/sh: 1: python: not found

谢谢大家的快速回复!添加PATH=/usr/local/bin在 cron 文件中解决了我的问题。


cron 没有设置PATH环境变量与普通登录​​ shell 相同,因此python找不到。如果您指定 Python 可执行文件的完整路径,它应该可以工作,例如代替python with /usr/bin/python(或者你的Python可执行文件的路径是什么)。或者,您可以显式设置PATHCron 配置文件中的环境变量以包含可以找到 Python 的目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 docker 中通过 cron 运行时`/bin/sh: 1: python: not found` 的相关文章

随机推荐