如何使用Supervisor管理Docker容器多个进程
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,这篇文章主要讲解了"如何使用Supervisor管理Docker容器多个进程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用Supervisor
千家信息网最后更新 2025年02月04日如何使用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安全错误
数据库的锁怎样保障安全
管理远程桌面服务器
后台服务器如何管理网站
建立小团队软件开发管理
土地数据库建设实验报告
独立游戏开发者搭建游戏服务器
湖南手机软件开发哪家好
软件开发指的是APP吗
银行 网络安全法 报告
阿里云polar数据库认证招聘
闵行区机械网络技术零售价格
在线编辑器如何保存数据库
宁晋县网络安全和信息化
山东标准软件开发单价
密云租房软件开发
ab服务器管理
客户端和服务器进行交互
关于网络安全的话剧
巴中软件开发方案
数据库测试卷管理
软件开发需要学linux
文科计算机网络技术好吗
软件开发创业培训班
传奇服务器新武器
项目中数据库转换
如何关闭数据库连接池
直销行业软件开发公司
做个前端程序写进数据库
科技互联网教育产品
复制粘贴不要覆盖原有数据库
我的世界西格玛服务器ip