我已经使用docker几个月了,我正在开发各种不同的服务器映像.一个一致的问题是许多服务器需要运行cron作业.关于那个在线(包括Stackoverflow)有很多讨论,但我并不完全理解它的机制.
目前,我正在使用主机的cron和docker exec进入每个容器来运行脚本.我创建了一个关于脚本名称和位置的约定; 我的所有容器都有相同的脚本.这样可以避免主机的cron取决于容器.
基本上,每分钟一次,主持人的cron会这样做:
for each container
docker exec -it <containername> /cronscript/minute-script
Run Code Online (Sandbox Code Playgroud)
这可行,但使容器依赖于主机.
我想要做的是创建一个cron容器,在每个其他容器中启动脚本 - 但我不知道相当于"docker exec"从一个容器到另一个容器.
我现在的具体情况是在MySQL容器中运行备份,并且运行cron作业Moodle需要每分钟运行一次.最终,我还需要通过cron做更多的事情.Moodle使用命令行PHP脚本.
从另一个容器中的一个容器启动脚本的"正确"的dockerized方法是什么?
更新:也许有助于提及我的具体用例,尽管随着时间的推移会有更多.
目前,cron需要执行以下操作: