首页 > 解决方案 > cronjob 未在 Docker 容器中运行 throw Dockerfile

问题描述

我在运行 docker 容器时遇到问题,cronjob 服务正在运行,但 cronjob 没有按计划执行,我想要实现的是不附加卷

Dockerfile

FROM node:8.9.1         
RUN apt update && apt-get install -y cron vim
RUN mkdir app
WORKDIR /srv/image-server/current/
COPY . .
RUN  npm i 
RUN  cd /tmp && touch abc && mkdir test
ENTRYPOINT  sh start.sh

并且还分享start.sh

#!/bin/sh
set -e
/etc/init.d/cron start
echo "* * * * * rm -rf /tmp/*" >> /var/spool/cron/crontabs/root
echo "#" >> /var/spool/cron/crontabs/root
/etc/init.d/cron status
node server.js

标签: linuxdockercron

解决方案


似乎没有创建日志文件,请先尝试创建一个空的日志文件并重新运行它

试试这个我已经测试过的 dockerfile 并且 crons 运行成功。

FROM node:8.9.1         
RUN apt update 
RUN apt-get install cron vim -y
RUN mkdir app && touch /var/log/mylog.log
WORKDIR /srv/image-server/current/
COPY ./cronjob /etc/cron.d/container_cronjob
COPY . /srv/image-server/current/
RUN  npm i 
RUN chmod 644 /etc/cron.d/container_cronjob
RUN chmod 777 start.sh
CMD cron && node server.js

我已将 crons 存储在 crontab 中

* 0 * * * root /srv/image-server/current/start.sh >> /var/log/cron.log 2>&1

这是 start.sh 文件内容

rm -rf /tmp/*

推荐阅读