apache 特定的 cron-jobs 不应该在 docker 映像中运行吗?

Posted

技术标签:

【中文标题】apache 特定的 cron-jobs 不应该在 docker 映像中运行吗?【英文标题】:Shouldn't apache specific cron-jobs run in docker image? 【发布时间】:2017-01-07 12:58:10 【问题描述】:

在Best practices for running Docker 指南中指出,每个 docker 容器只能运行一个进程。在 Ubuntu 中,有一些与每天运行的 apache-httpd 相关的 cron-jobs(位于/etc/cron.daily/apache2)。

当使用官方存储库中的 apache-docker-image 时(查看 here),那些 cronjobs 没有运行,只有 httpd 进程启动,cron 没有运行。

不应该执行上述的 cron-jobs 吗? 我很难弄清楚,如何从另一个 docker-image 执行这个 cron-jobs,正如“Best-practices-guide”中所建议的那样,因为“cron-docker-image”应该可以访问 apache-进程以正确运行 cron 作业。

【问题讨论】:

【参考方案1】:

对于基本的 apache,没有要运行的 cron 作业。

如果您要运行 cron 作业,则没有“正确答案”。

如果它们每天运行并且只运行一定的时间,您当然可以安排它们运行而不是使用 cron。

如果它们更定期地运行,或者您没有可以处理它的调度程序(如 AWS lambda),那么让您的网络服务器将它们作为 cron 运行并不违反最佳实践,您只需构建自己的容器apache 来处理它。

如果您真正的问题是“我如何运行 cron 作业”,那么快速谷歌带来:

https://github.com/aptible/docker-cron-example

https://hub.docker.com/r/hamiltont/docker-cron/

https://getcarina.com/docs/tutorials/schedule-tasks-cron/

您只需修改它们以使用&nohup 在后台运行

你试过什么?

【讨论】:

是的,很明显,我可以制作自己的容器,我可以在其中运行 cronjob,但是 - 正如我的问题中已经提到的 - 让 docker 容器只运行一个是最佳实践过程(参见问题中的 ling)。 我的意思是在你的容器中运行 cron 作业而不是像我的其他建议那样安排任务的答案......是在你的容器中运行 cron 作业。您在寻找示例吗?您的问题不清楚“我如何运行 cron 作业”。 感谢您的帮助,不胜感激!问题不在于如何在容器中运行 cron 作业。我知道如何实现这一目标。我的问题是,如何从另一个与 apache 容器链接的(cron-dedicated)容器运行 apache-specific-cron-jobs,因为其中不应运行多个进程(apache2 和 cron)一个容器,关于best-practices ...

以上是关于apache 特定的 cron-jobs 不应该在 docker 映像中运行吗?的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes Cron-Job闲置通知

用户指定时间的 Django cron-job

Laravel 5.2:邮件没有从cron-job发送,从邮件响应中收到错误

Apache 虚拟主机服务于不匹配的虚拟主机

如何使用 Apache 在特定页面上正确强制使用 HTTPS

在 Flutter 中从 main() 调用 setState()