我目前在 docker 容器中遇到 cron 问题。构建容器并安装 cron 后,我将入口点设置为:
ENTRYPOINT ["/bin/bash", "-c", "cron && sleep 99d"]
我在
/etc/cron.hourly/
中有一个有效的 shell 文件(使用 run-parts 进行测试)。
但是,我也以非 root 用户身份运行我的容器。因此,当我启动容器后进入容器时,cron 没有运行,并且我无法启动该服务。在切换到这个非root用户之前,我也尝试直接运行命令
RUN cron
USER non-root
但这似乎也没有启动该过程。问题是 cron.pid 文件需要 root 访问权限才能写入。显然,如果我以 root 用户身份启动容器,cron 进程就会启动。我做错了什么吗?目前唯一缺少的是 cron 服务未在容器启动时启动。
我发现最简单的选择是更改
root
用户密码:
# cron
RUN echo 'root:toor' | chpasswd
COPY crontab /crontab
RUN crontab /crontab
CMD echo 'toor' | su -c cron && php -a
# /cron
USER non-root