Cron job在docker

时间:2015-06-06 00:57:06

标签: cron docker dockerfile docker-compose

为了在启动时启动selenium服务器,

我必须将entry_point.sh置于/opt/bin

之下

但如果我取消注释cron命令CMD cron && tail -f /var/log/cron.log

服务器不再运行了。

我无法弄清楚为什么会被打破

这是我的cron文件

SHELL=/usr/bin/zsh
* * * * * echo $PATH >> /root//reboot_record.txt >> /tmp/cron_debug_log.log 2>&1
* * * * * cd /home/poc/lazy-bird/j && ruby j.rb >> /tmp/cron_debug_log.log 2>&1
* * * * * echo $PATH >> /root//reboot_record.txt >> /tmp/cron_debug_log.log 2>&1
* * * * * cd /home/poc/lazy-bird/p && ruby p.rb >> /tmp/cron_debug_log.log 2>&1

这是我的泊坞文件

#====================================
# Scripts to run cron job
#====================================
# Add crontab file in the cron directory
ADD cron_lazy_bird /etc/crontab
# Create the log file to be able to run tail
RUN touch /var/log/cron.log
# Use the crontab file
RUN crontab /etc/crontab
# Run the command on container startup
#CMD cron  && tail -f /var/log/cron.log
#====================================
# Scripts to run Selenium Standalone
#====================================
COPY entry_point.sh /opt/bin/entry_point.sh
RUN chmod +x /opt/bin/entry_point.sh
USER seluser
EXPOSE 4444
USER root
CMD ["/bin/bash", "/opt/bin/entry_point.sh"]

UPDATE entry_point.sh

cron  && tail -f /var/log/cron.log

export GEOMETRY="$SCREEN_WIDTH""x""$SCREEN_HEIGHT""x""$SCREEN_DEPTH"

xvfb-run --server-args="$DISPLAY -screen 0 $GEOMETRY -ac +extension RANDR" \
    java -jar /opt/selenium/selenium-server-standalone.jar \
    -role node \
    -hub http://$HUB_1_PORT_4444_TCP_ADDR:$HUB_1_PORT_4444_TCP_PORT/grid/register \
    -browser browserName=firefox

1 个答案:

答案 0 :(得分:0)

您的入口点脚本需要从ENTRYPOINTCMD指令调用,否则在启动容器时不会运行。

在启动应用程序之前,您需要删除CMD并从入口点脚本启动cron。您可能希望使用流程管理器(如runit或supervisord)来处理此问题(请参阅https://docs.docker.com/articles/using_supervisord/)。