gpt4 book ai didi

docker - 在 docker 云容器中运行 cronjob 或任务

转载 作者:行者123 更新时间:2023-12-02 19:09:33 26 4
gpt4 key购买 nike

我被卡住了,需要帮助。我在 docker cloud 上设置了多个堆栈。堆栈运行多个容器,如数据、mysql、web、elasticsearch 等。

现在我需要在 Web 容器上运行命令。在 docker 之前,我使用 cronjob 执行此操作,例如:

*/10 * * * * php /var/www/public/index.php run my job

但我的网络 Dockerfile 以
CMD ["apache2-foreground"]

据我了解,在一个容器上运行两个命令的 docker 概念是不好的做法。但是我将如何安排像上面的一个 cronjob 这样的工作呢?

我也应该在 CMD 中启动 cron 吗?
CMD ["cron", "apache2-foreground"] ( should exit with 0 before apache starts)

我应该制作一个运行这两个命令的启动脚本吗?

在我看来,最聪明的解决方案是创建另一个服务,例如 dockercloud haproxy 服务,其中链接了其他服务。

然后 cron 服务将执行在链接容器/堆栈的堆栈文件中定义的命令。

谢谢你的帮助

最佳答案

通常使用 docker,我看到 3 个选项:

  • 在同一个容器中运行你的 cron 进程
  • 在不同的容器中运行你的 cron 进程
  • 在主机上运行 cron,在 docker
  • 之外

    要在同一个容器中运行 cron,您可以查看 https://github.com/phusion/baseimage-docker

    或者您可以创建一个单独的容器,其中唯一运行的进程是 cron 守护进程。我没有方便的链接,但他们在那里。然后,您使用 cron 调用连接到其他容器并调用您想要运行的内容。使用一个应该足够简单的 apache 容器,只需公开一些最小的 http API 端点,它会在调用它时执行您想要完成的操作(确保它不易受到任何注入(inject)的影响,即不传递任何参数,保持简单愚蠢) .

    如果您也可以控制主机,那么您可以(ab)使用在那里运行的 cron 守护程序(我目前使用我的容器执行此操作)。我不知道 docker cloud,但有些事情告诉我,这可能不是你的选择。

    关于docker - 在 docker 云容器中运行 cronjob 或任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42140172/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com