不想有过多依赖,尽可能的减少镜像体积。
比如 supervisor 需要 python 环境。pm2 需要 node 环境。可是程序是 php 的....
nginx必须和fpm一起跑是因为有try_files等很多的自定义规则要验证本地脚本文件或者目录。当然可以规划pod运行多个容器同时共享volume。但是现阶段没有什么必要。而且对于php来说,无论是fpm还是nginx挂掉了,这个服务都没有存在的必要。
1
lovepocky 2022-09-21 13:32:29 +08:00 via iPhone
systemd
|
2
Jirajine 2022-09-21 13:35:53 +08:00
runit 、s6
|
3
6IbA2bj5ip3tK49j 2022-09-21 13:46:28 +08:00
你容器用法就错了。
|
5
dzdh OP |
6
julyclyde 2022-09-21 14:17:52 +08:00 2
首先你在 docker 里用 supervisord (及同类产品)就用错了
|
7
superchijinpeng 2022-09-21 14:26:57 +08:00
为什么在容器里这么用?需要多个进程可以 Multi Containers 啊
|
8
lambdaq 2022-09-21 14:31:20 +08:00
https://skarnet.org/software/s6/ 这个看他简介把 supervisord 和 runit 都喷了一遍,就选他
@julyclyde @xgfan 以前我也这么认为,但是现在用错的人太多感觉要改字典了 |
9
dzdh OP |
11
virusdefender 2022-09-21 15:30:31 +08:00
有个 go 写的 supervisor ,但是几年前用的时候有很多 bug ,现在不知道咋样了 https://github.com/ochinchina/supervisord
|
12
dzdh OP @virusdefender 这个看了看代码.....emm 咋说呢 有些地方的处理逻辑[可能]会发生意外导致进程退出没太敢用。我再去看看。
|
13
zhoujinjing09 2022-09-21 16:17:33 +08:00
|
14
julyclyde 2022-09-21 17:01:01 +08:00
@dzdh 为什么要 nginx+fpm 呢?你就 pod 里只运行 fpm 不就得了
nginx 让 k8s ingress 来承担 |
15
tcsky 2022-09-21 20:20:10 +08:00
|
16
MengiNo 2022-09-21 20:48:26 +08:00 via Android
纯 docker 也有 docker compose 啊,自始至终感觉没啥必要往容器里塞两个(除了新手固有印象和一些“方便”党)。非得说,往 fpm 容器里装个 crond 也比装个 nginx 能接受点,毕竟从方便的角度纯 docker 确实欠缺这块。
|
17
ClericPy 2022-09-21 20:59:57 +08:00
没看到用容器的时候还想说 supervisord 就是平时玩玩用, 认真起来还是 systemd 那套. 看到容器... 总感觉怪怪的, 今天我手写个守护进程来保证同镜像更新代码热重启都觉得自己罪恶感, 用 supervisor 在容器里守护总感觉味道不太正
|
18
wxyrrcj 2022-09-22 07:51:49 +08:00 via Android
joker github 搜下
|
22
julyclyde 2022-09-22 09:11:39 +08:00
@dzdh 按说当代 URI 都不是由访客手工拼写的啊,为什么会有 try_files 的需求呢?你直接给它一个确保正确能用的 URI 不就行了?
|
23
dzdh OP @julyclyde 拿 laravel 来说 try_files $uri $uri/ /index.php 。我路由变化怎么办,老功能下线怎么办。用户访问旧 URL 直接返回 nginx 的 404 页么。当然不仅限这一种场景。
|
25
dzdh OP @julyclyde #24
不仅限这一种场景。项目比较老光 nginx 的配置不下上千行。 参看 https://v2ex.com/t/881625 第六点 (这不是我司这不是我司这不是我司,只是其中一点类似) 所以,问题是:有没有什么好用的容器多进程管理工具在容器中。 |
26
julyclyde 2022-09-22 09:30:27 +08:00
@dzdh 容器本身是一个独立的调度单位,再里面更加细分其实是不合适的
如果下属进程故障,1 号进程有义务负责重启修复(不一定能成功),或者优雅退出,把错误交给上一级调度机制来处理(推卸责任) 选哪个行为更好呢? |
28
tairan2006 2022-09-22 11:14:39 +08:00
有种为赋新词强说愁的感觉,上不了 k8s 就别上了……
k8s 设计里,容器就是单进程模型,你搞这套还不如物理机得了。 |