linux - 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
解决方案
似乎没有创建日志文件,请先尝试创建一个空的日志文件并重新运行它
试试这个我已经测试过的 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/*
推荐阅读
- entity-framework - 如何在实体框架代码第一个迁移文件中生成默认sql值
- c++ - dart 和 c++ 之间的套接字加密和解密
- jmeter - 通过命令行值触发条件
- apache-kafka - Kafka在产生新主题时复制了已删除的主题
- objective-c - 为什么alloc返回nil?(目标-C)
- r - 在r中格式化日时分第二列
- r - 在R中乘以相似的命名合并列
- python - Keras Transfer-Learning 设置 layers.trainable 为 True 没有效果
- sql - REGEXP_SUBSTR:正则表达式错误中的括号不匹配
- flutter - Flutter,admob dispose有时不起作用