docker supervisord 管理多进程的建议

 

配置使用绝对路径

 

启动参数 -c 指定配置 supervisord.conf 绝对路径。比如 Dockerfile 最后这么写:

 

ENTRYPOINT ["/usr/bin/supervisord""-c""/etc/supervisor/supervisord.conf"]
多个启动项配置文件统一目录

 

如 /etc/supervisor/conf.d/,并且在 supervisord.conf include 这里目录


[include]files = /etc/supervisor/conf.d/*.conf

每个启动项日志统一

 

统一放入目录,如:/tmp/xxx_stdout.log,并设置日志滚动大小和保留份数


supervisord 配置

  • 需要配置 nodaemon=true,默认输出扔给 docker
  • supervisorctl 使用 http server 方式管理,这里涉及 docker overlayfs unix sockets 一个问题,无法管理启动项,不知道现在是否解决


[inet_http_server]
port=127.0.0.1:9001
username=user
password=123

[supervisorctl]
serverurl=http://127.0.0.1:9001
username=user
password=123
 

缺点就是多监听本地一个端口,并注意不能和应用端口冲突

 

一次性程序

比如要执行初始化,可以:

 

[program:xxx]
command=sh /xxx.sh
startretries=0
autorestart=false

传递环境变量

针对非 root 用户启动,并且需要读取容器启动时候环境变量(env)传递,新写 ENTRYPOINT 脚本中获取环境变量,写入文件,最后再运行 supervisord

 

$ cat Dockerfile
ENTRYPOINT ["/entrypoint.sh"]
$ cat /entrypoint.sh
获取环境变量,写入配置,或者拼接完整 command 
/usr/bin/supervisord -c xx.conf

重启或者重加载配置

在容器内 kill -HUP 1 即可

-EOF-

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值