使用 s6-svscan 进行进程管理,docker supervisord 替代者

一  软件简介

      s6-svscan 是一款类似于supervisord 的 Linux 程序管理软件,能够实现对程序进程的健康监控和主动重启等操作。

      考虑到 supervisord 默认不回显程序打印日志,这给 docker 的日志管理带来了麻烦,

      故本文采用  s6-svscan 代替 supervisord 进行程序管理。

二  使用方法

2.1    软件下载

        首先需要下载 s6 suite 软件 s6-overlay-amd64.tar.gz,

        下载地址 :https://github.com/just-containers/s6-overlay/releases/download/v1.19.1.1/s6-overlay-amd64.tar.gz

2.2    将 s6 软件打包到 docker 镜像

         即解压覆盖 /usr 目录即可

         Dockerfile 关键代码:ADD s6-overlay-amd64.tar.gz /usr/

2.3    编写服务启动脚本

        每个服务程序单独创建一个目录,内置一个名称为 run 的脚本和一个名称为 finish 的脚本,

        run 负责启动程序,finish 执行程序退出后的操作,run 脚本应该是长时运行的。

        例如,我的服务路径分布为:

         /service

               /app1

                     /run

                     /finish  

               /app2

                     /run

                     /finish

2.4     设置容器启动时执行 s6 启动相关服务

          启动命令很简单,传入服务脚本所在路径即可,这里即为  /usr/bin/s6-svscan /service

          Dockerfile 关键代码:CMD ["/usr/bin/s6-svscan", "/service"]

          这样,容器启动时就会扫描 /service 文件夹,执行对应的 run 脚本,当 run 脚本意外退出时,s6 会自动重启。

2.5     一个 s6 运行示例截图

          

2.6     日志显示情况

          

2.7     备注说明

          如果某个服务暂时不想通过 s6 自动启动,可以在其服务脚本文件夹内(与 run 同路径)放置一个名称为 down 的文件,

          这样 s6 就不会执行对应的 run 脚本了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值