如何使用Supervisor管理Docker容器多个进程
发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章主要讲解了"如何使用Supervisor管理Docker容器多个进程",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何使用Supervisor
千家信息网最后更新 2024年12月12日如何使用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安全错误
数据库的锁怎样保障安全
应用软件开发需要学习什么
杭州bim软件开发工程师
服务器不能打开任务管理器
福州直播短视频软件开发
口碑好的网络技术出厂价格
网络安全立体美术字怎么写
麦客网络安全
江西软件开发学校排名
太仓专业性网络技术包括什么
山东商业软件开发费用
服务器02
服务器被入侵没有网怎么办
宿州 软件开发
首届网络安全日哪年
网络安全防护设施清单
哈罗显示当前车辆处于服务器外
山东济南浪潮服务器怎么收费
富民综合软件开发报价表
推荐的数据库所有者
桂平服务器充电桩
控制系统网络安全定义
数据库怎么查看用户权限
华为超融合服务器调整硬盘容量
数据库审计市场占有率
杭州索非软件开发有限公司
服务器未挂载是什么意思
学生信息管理系统数据库设计完整
教育网络安全标语
绍兴现在那里还有服务器
海上风电网络技术