使用 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 脚本了。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部