首页 > 解决方案 > Bash shell 脚本不执行命令 docker entrypoint

问题描述

我有一个 shell 脚本,当它从 docker CMD 运行时,它没有执行“crontab”命令。但是当我在 docker 容器内执行文件时有效。我错过了什么?

文件 entry.sh:

#!/bin/sh
echo "Starting cron"
/usr/sbin/cron -f -L 15
crontab /etc/cron.d/cron-python

码头工人文件:

FROM python:3
RUN apt-get update && apt-get -y install cron
COPY ./cron/entry.sh /entry.sh
COPY ./cron/crontab.txt /etc/cron.d/cron-python
RUN chmod +x /entry.sh
RUN chmod 0644 /etc/cron.d/cron-python
CMD ["./entry.sh"]

cron-python:

#   crontab -e
*/1 * * * * python /app/myscript.py >> /var/log/script.log 2>&1

标签: bashdockercron

解决方案


以下应该工作:

#!/bin/sh
# start cron
echo "Starting cron"
crontab /etc/cron.d/cron-python
/usr/sbin/cron -f -L 15

在您的版本中,/etc/cron.d/cron-python没有安装,因为您要求 /usr/sbin/cron 在前台运行。

您还需要复制 /app/myscript.py。


推荐阅读