如何使用Supervisor管理Docker容器多个进程
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要讲解了"如何使用Supervisor管理Docker容器多个进程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用Supervisor
千家信息网最后更新 2026年11月03日如何使用Supervisor管理Docker容器多个进程
这篇文章主要讲解了"如何使用Supervisor管理Docker容器多个进程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用Supervisor管理Docker容器多个进程"吧!
默认情况下 docker 容器只运行单个进程(docker推崇的理念),但是项目需要两个服务(php-fpm、nginx),所以需要第三方的进程管理软件,在docker中较流行的方案是使用 supervisor 软件管理多个进程。
环境描述
构建目录
tree demo/demo/├── conf│ ├── default.conf│ ├── nginx.conf│ ├── php-docker.conf│ ├── php.ini│ ├── php-www.conf│ └── supervisord.conf├── Dockerfile└── src └── demo.tar.gz2 directory, 8 files
代码文件
src 目录存放项目代码压缩包demo.tar.gz # 文件由 jenkins CI工具生成。
配置文件
conf 目录保存着配置文件 nginx 配置文件: default.conf # 虚拟主机配置文档 nginx.conf # nginx主配置文档php 相关配置文件: php.ini # php主配置文档 php-docker.conf # php-fpm 配置 php-www.conf # php-fpm 文档supervisor 配置文件: supervisord.conf # supervisor配置文档
nginx 与 php 配置文件可以保持默认或按实际需求配置。
如需要 php-fpm 配置文件,可以通过命令获得容器内的配置文件,例如 www.conf 文件:
docker run --rm php:5.6-fpm cat /usr/local/etc/php-fpm.d/www.conf >> ./my.conf
下面重点说一下 Dockerfile 与 supervisord 。
操作步骤
先来看下 Dockerfile
cat demo/Dockerfile# 使用自定义项目基础镜像 demo-base:0.0.1FROM demo-base:0.0.1MAINTAINER dongnan #<@微信公众号:运维录># phpCOPY conf/php.ini /usr/local/etc/php/php.iniCOPY conf/php-www.conf /usr/local/etc/php-fpm.d/www.confCOPY conf/php-docker.conf /usr/local/etc/php-fpm.d/docker.conf# nginxCOPY conf/nginx.conf /etc/nginx/nginx.confCOPY conf/default.conf /etc/nginx/conf.d/default.conf# supervisorRUN mkdir -p /var/log/supervisor \ && mkdir -p /var/log/phpCOPY conf/supervisord.conf /etc/supervisor/supervisord.conf# code 放到 nginx根目录,目录位置应与虚拟主机配置一致# ADD 指令自动解压缩包,RUN 指令执行权限设置命令WORKDIR /var/www/ADD src/demo.tar.gz /var/www/RUN chown -R www-data.www-data .# statement portEXPOSE 80# cmdCMD ["/usr/bin/supervisord","-c","/etc/supervisor/supervisord.conf"]
supervisor 配置文件
cat demo/conf/supervisord.conf[supervisord]nodaemon=truepidfile=/var/run/supervisord.pidlogfile=/var/log/supervisor/supervisord.log[program:nginx]command=/usr/sbin/nginx -g "daemon off;"[program:php-fpm]command=/usr/local/sbin/php-fpm -c /usr/local/etc/php/php.ini -y /usr/local/etc/php-fpm.conf -F
supervisor 配置参数
nodaemon=true # 在前台运行 supervisord 主进程pidfile/logfile # 指定文件位置[program:xxx] # 定义被 supervisord 管理的应用程序command # 程序的启动命令,需要使用绝对路径nginx -g "daemon off;" # 在前台运行 nginx php-fpm ... -F # 在前台运行 php-fpm
构建项目镜像
cd demo/docker build -t demo-project:0.0.1 .Sending build context to Docker daemon 3.2 mb# 省略....Successfully built ai43125ed1u0
验证镜像
# 创建容器docker run -d --name test demo-project:0.0.19a40982510xxxxxxx9d227d3456b2261c6451109020a# 容器进程docker inspect --format="{{.State.Pid}}" test30878# 由 supervisor 管理的 nginx 与 php-fpm 进程pstree 30878supervisord─┬─nginx───2*[nginx] └─php-fpm───2*[php-fpm]# 也可使用`docker top xxx`命令查看,不过输出内容太多,微信文章折行严重。小结
最后来总结下文章中的知识点
基础镜像作用是为
项目镜像提供支持,并在基础镜像之上添加项目代码,完成项目镜像构建工作。使用
supervisor在容器中运行管理多个进程,supervisord 将作为容器中的第一个进程。supervisord 运行后,被管理的进程当作 supervisord的子进程来启动,并监控子进程状态,如果异常退出则自动重启。
感谢各位的阅读,以上就是"如何使用Supervisor管理Docker容器多个进程"的内容了,经过本文的学习后,相信大家对如何使用Supervisor管理Docker容器多个进程这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
配置
进程
文件
容器
管理
镜像
项目
多个
文档
运行
命令
目录
代码
内容
前台
基础
文章
学习
主机
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司排名
上海卓越科技互联网
互联网最新的科技
互联网扶贫科技
互联网中国科技
港股互联网科技股
互联网 科技
银优互联网科技有限公司
大白互联网科技
互联网科技宣传片
哈尔滨新华互联网科技
现代互联网科技股
华服互联网科技官网
昭通互联网科技选哪家
搜狐科技互联网
互联网科技大奖都有哪些公司
互联网科技人工智能实验室
广州千川互联网科技有限公司
互联网科技博主张洲
广州全民伙伴互联网科技有限公司
中关村互联网科技集团
科技服务与互联网
互联网金融公司科技
杭州互联网科技公司
互联网科技素材视频竖屏
互联网与数字科技关系
广州燕处互联网科技有限公司
山东蛋芒互联网科技有限公司
平安好医生打造互联网科技医疗
瑞安市蟠桃会互联网科技有限公司