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

69 天前
 skyrim61

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

1633 次点击
所在节点    程序员
13 条回复
chenhua19940128
69 天前
一样的,在宿主机上使用 crontab ,然后通过 docker exec 来执行 docker 里的命令行
brader
69 天前
有,使用 ofelia 秒级定时器,可替代 crontab ,能和 docker 容器更方便的交互,https://github.com/mcuadros/ofelia

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