【发布时间】:2023-01-22 20:35:56
【问题描述】:
我需要在 docker 容器中执行 crontab,所以我创建了以下 dockerfile:
FROM openjdk:11-oraclelinux8
RUN mkdir -p /opt/my-user/
RUN mkdir -p /opt/my-user/joblogs
RUN groupadd my-user && adduser my-user -g my-user
RUN chown -R my-user:my-user /opt/my-user/
RUN microdnf install yum
RUN yum -y update
RUN yum -y install cronie
RUN yum -y install vi
RUN yum -y install telnet
COPY talend /opt/my-user/
COPY entrypoint.sh /opt/my-user/
RUN chmod +x /opt/my-user/entrypoint.sh
RUN chmod +x /opt/my-user/ETLJob/ETLJob_run.sh
RUN chown -R my-user:my-user /opt/my-user/
RUN echo "*/2 * * * * /bin/sh /opt/my-user/ETLJob/ETLJob_run.sh >> /opt/my-user/joblogs/job.log 2>&1" >> /etc/cron.d/my-user-job
RUN chmod 0644 /etc/cron.d/my-user-job
RUN crontab -u my-user /etc/cron.d/my-user-job
RUN chmod u+s /usr/sbin/crond
USER my-user:my-user
ENTRYPOINT [ "/opt/my-user/entrypoint.sh" ]
我的entrypoint.sh 文件如下:
#!/bin/bash
echo "Start cron"
crontab /etc/cron.d/diomedee-job
echo "cron started"
# Run forever
tail -f /dev/null
到目前为止一切顺利,容器已成功创建,当我进入容器并输入crontab -l时,我看到了 crontab...但它从未执行过
我不知道我错过了什么;我所做的任何研究都没有给我任何线索
你能给我点小费吗?
【问题讨论】:
-
您要在容器内运行的命令是
cron(而不是crontab....)。在您最喜欢的搜索引擎中输入“running cron inside docker container”将根据您的具体用例为您提供数十个带有示例的结果