请教一个问题, 有个小型的项目使用 LNAP 架构, 语言是 PHP , 打算使用 docker 容器来构建这套 LNAP 环境

2024-09-06 16:28:47 +08:00
 skyrim61

问题: 对于一些 php 的脚本, 之前在宿主机上使用 crontab 来周期性执行, 如果改成了 docker 容器, 这些脚本该如何处理, 毕竟 php 解释器在容器里面了. 有没有什么好的方式处理呢?

2102 次点击
所在节点    程序员
13 条回复
chenhua19940128
2024-09-06 16:34:09 +08:00
一样的,在宿主机上使用 crontab ,然后通过 docker exec 来执行 docker 里的命令行
brader
2024-09-06 16:37:28 +08:00
有,使用 ofelia 秒级定时器,可替代 crontab ,能和 docker 容器更方便的交互,https://github.com/mcuadros/ofelia

还可以参考我的 docker 项目 https://github.com/wenshunbiao/docker/tree/master/ofelia ,看我是如何使用它的
brader
2024-09-06 16:40:52 +08:00
@brader #2 修正一下:毫秒级定时器
brader
2024-09-06 16:42:12 +08:00
@brader #3 我想我今天大概是头晕眼花了,再次修正:秒级定时器
skyrim61
2024-09-06 16:56:36 +08:00
感谢感谢.
pota
2024-09-06 17:33:24 +08:00
我现在线上方案用了两种,一种是单开一个容器来跑定时任务。一种是宿主机 exec 进行调用。不过考虑到稳定。目前都用单独容器来处理了
thank4
2024-09-06 17:46:19 +08:00
@pota 这样是不是 php 的代码需要用容器卷挂载到目录啊?
concernedz
2024-09-06 17:47:32 +08:00
1panel 部署就是用 docker exec 的方法
pota
2024-09-06 18:05:26 +08:00
@thank4 #7 我这边 php 本身考虑更新代码速度单独用 busybox 用来包装代码,运行时的容器是单独的。不然每次代码更新还得拉一次新得运行时
ety001
2024-09-06 21:59:47 +08:00
除了上面提到的在宿主机的方案,还可以在容器内安装 supervisor ,crontab ,把 supervisor 作为容器的运行程序,然后 php 和 crontab 两个服务都由 supervisor 来管理。这个方案的优势在于 crontab 的配置是跟 docker 镜像下发的,不需要额外再登陆宿主机进行额外配置。
ysc3839
2024-09-07 02:35:58 +08:00
Twnysta
2024-09-07 13:17:24 +08:00
#!/bin/sh
rm -rf /etc/default/locale && env >> /etc/default/locale && crontab /var/spool/cron/crontabs/root && cron -f
启动命令执行一个 sh 文件,定时任务单独一个容器
skyrim61
2024-09-09 14:33:16 +08:00
目前的任务计划不多, 不到 100 个, 倾向先用 docker exec 在 crontab 中运行, 先看看效果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1070788

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX