多商户Docker Supervisor进程管理器部署

Dockerfile

根目录下没有Dockerfile的可以复制下面的命令

# 使用基础镜像
FROM leekay0218/crmeb-mer## 复制代码
## 在本地调试注释掉,使用映射把文件映射进去
#ADD ./ /var/www# 设置工作目录
WORKDIR /var/www# 设置时区为上海
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \echo $TZ > /etc/timezone && \echo '[PHP]\ndate.timezone = "'$TZ'"\n' > /usr/local/etc/php/conf.d/tzone.ini# 创建 mer_s.conf 配置文件
RUN echo "[program:mer_s]" > /etc/supervisor/conf.d/mer_s.conf && \echo "command=php think swoole restart" >> /etc/supervisor/conf.d/mer_s.conf && \echo "directory=/var/www/" >> /etc/supervisor/conf.d/mer_s.conf && \echo "autorestart=true" >> /etc/supervisor/conf.d/mer_s.conf && \echo "startsecs=3" >> /etc/supervisor/conf.d/mer_s.conf && \echo "startretries=3" >> /etc/supervisor/conf.d/mer_s.conf && \echo "stdout_logfile=/var/log/supervisor/mer_s.out.log" >> /etc/supervisor/conf.d/mer_s.conf && \echo "stderr_logfile=/var/log/supervisor/mer_s.err.log" >> /etc/supervisor/conf.d/mer_s.conf && \echo "stdout_logfile_maxbytes=2MB" >> /etc/supervisor/conf.d/mer_s.conf && \echo "stderr_logfile_maxbytes=2MB" >> /etc/supervisor/conf.d/mer_s.conf && \echo "user=root" >> /etc/supervisor/conf.d/mer_s.conf && \echo "priority=999" >> /etc/supervisor/conf.d/mer_s.conf && \echo "numprocs=1" >> /etc/supervisor/conf.d/mer_s.conf && \echo "process_name=%(program_name)s_%(process_num)02d" >> /etc/supervisor/conf.d/mer_s.conf# 创建 mer_q.conf 配置文件
RUN echo "[program:mer_q]" > /etc/supervisor/conf.d/mer_q.conf && \echo "command=php think queue:work --tries 2" >> /etc/supervisor/conf.d/mer_q.conf && \echo "directory=/var/www/" >> /etc/supervisor/conf.d/mer_q.conf && \echo "autorestart=true" >> /etc/supervisor/conf.d/mer_q.conf && \echo "startsecs=3" >> /etc/supervisor/conf.d/mer_q.conf && \echo "startretries=3" >> /etc/supervisor/conf.d/mer_q.conf && \echo "stdout_logfile=/var/log/supervisor/mer_q.out.log" >> /etc/supervisor/conf.d/mer_q.conf && \echo "stderr_logfile=/var/log/supervisor/mer_q.err.log" >> /etc/supervisor/conf.d/mer_q.conf && \echo "stdout_logfile_maxbytes=2MB" >> /etc/supervisor/conf.d/mer_q.conf && \echo "stderr_logfile_maxbytes=2MB" >> /etc/supervisor/conf.d/mer_q.conf && \echo "user=root" >> /etc/supervisor/conf.d/mer_q.conf && \echo "priority=999" >> /etc/supervisor/conf.d/mer_q.conf && \echo "numprocs=1" >> /etc/supervisor/conf.d/mer_q.conf && \echo "process_name=%(program_name)s_%(process_num)02d" >> /etc/supervisor/conf.d/mer_q.conf# 设置入口命令
ENTRYPOINT ["/entrypoint.sh"]# 创建日志文件
RUN touch /var/www/service.err.log /var/www/service.out.log

Docker镜像加速器

点击链接使用支付宝登录后就能看到加速器地址和操作方法

阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

制作SWOOLE运行镜像

1. 进入到项目根目录看到Dockerfile文件后在当前目录打开命令行

执行命令,后面的点,一定不能缺少;创建一个叫:pro的镜像

镜像内php版本为7.4版本
docker build -t mer_test .

2. 运行镜像

docker run --name mer_test_con -itd -p 8324:8324 -v D:\crmeb\crmeb_merchant:/var/www mer_test

解释:
-v D:\crmeb\crmeb_merchant:/var/www 把本地D:\crmeb\crmeb_merchant下的文件映射到容器中的/var/www目录中这样就改了本地的文件容器内的就自动变
—name 容器名称
-p 20199:20199 映射端口
最后的参数:mer_test是镜像的名称

3. 进入容器查看

mer_test_con是上一步给容器设置的名称,其他都是固定格式

docker exec -it mer_test_con /bin/bash
# 查看supervisor管理里启动的程序
supervisorctl status

下面这样就是启动正常,如果mer_q(队列没有启动),检查一下redis是否连接正常

77548202308180947557374.png

4 supervisor简单使用

序号命令信息作用说明
1supervisorctl status产看所有进程状态
2supervisorctl stop [name]停止[name]服务
3supervisorctl start [name]启动[name]服务
4supervisorctl restart [name]重启[name]服务
5supervisorctl update重新加载配置文件
6supervisorctl reload重启配置中所有服务

把name换成all可以管理配置中的所有进程。

直接输入supervisorctl进入supervisorctl的shell交互界面,此时上面的命令不带supervisorctl可直接使用。

# 启动 supervisor
supervisord -c /etc/supervisor/supervisord.conf

5. 更多redis和mysql容器创建和使用

win10安装docker_swoole win10-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/832665.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SeetaFace6人脸检测C++代码实现Demo

SeetaFace6包含人脸识别的基本能力:人脸检测、关键点定位、人脸识别,同时增加了活体检测、质量评估、年龄性别估计,并且顺应实际应用需求,开放口罩检测以及口罩佩戴场景下的人脸识别模型。 官网地址:https://github.co…

Terraform代码风格规范

Terraform推荐以下代码规范: 使用两个空格缩进同一缩进层级的多个赋值语句以等号对齐: ami "abc123" instance_type "t2.micro" 当块体内同时有参数赋值以及内嵌块时,请先编写参数赋值,然后是内…

burp靶场sql注入通关—下

第十一关(布尔盲注): 1.根据提示修改包含 TrackingId cookie的请求,先抓包并修改这个值,在后面加上永真式发现出现Welcome back TrackingIdxxxx and 11 再修改这个值为永假式看看,发现没有Welcome back&am…

OpenNJet下载安装及入门实战教程

一、什么是OpenNJet OpenNJet是一款开放原子开源基金会孵化及运营的开源项目。OpenNJet采用C语言实现。是一款高性能、轻量级的WEB应用及代理软件。    OpenNJet 应用引擎是高性能、轻量级的WEB应用与代理软件。作为云原生服务网格的数据平面,NJet具备动态配置加载…

Docker容器内容总结

目录 一、Docker概述 1.Docker是什么 2.Docker三个统一方式 3.Docker三要素 4.Docker底层原理 5.Docker常规命令 6.Docker网络 7.Docker散装的功能 二、Dockerfile 1.Dockerfile创建镜像流程 2.Dockerfile常规指令 三、Docker-Compose 1.YML文件内部控制参数 2.Do…

python数据分析所需要的语法基础

Python语言基础——语法基础 前言语法基础变量标识符数据类型输入与输出代码缩进与注释 总结 前言 对于学过C语言的人来说,python其实很简单。学过一种语言,学习另一种语言,很显然的能感觉到,语言大体上都是相通的。当然&#xf…

Mac升级go版本某种错误情况处理

当看到 "go1.21 is keg-only, which means it was not symlinked into /opt/homebrew" 这样的信息时,意味着Homebrew没有自动为你创建指向新版本Go的符号链接(symlink),因为这是一个旧版本Go的替代版本。 Homebrew中的…

速盾高防CDN的防御能力如何?

速盾高防CDN是一种网络安全解决方案,旨在保护网站免受各种网络攻击,如分布式拒绝服务(DDoS)攻击、恶意爬虫、SQL注入等。它通过使用先进的防御技术和强大的基础设施来提供出色的防御能力。 首先,速盾高防CDN具备强大的…

Python画图时好看的颜色列表,7个颜色

在Python中,使用matplotlib库可以画出各种图表,并且可以自定义颜色。以下是一些常用的颜色列表,这些颜色搭配起来既美观又能在图表中区分不同的数据集: 鲜艳颜色列表: colors [#FF5E5E, #00A1CB, #FABE28, #2B3E51,…

企业微信hook接口协议,ipad协议http,客户群发送任务,获取要发送的客户群列表

客户群发送任务,获取要发送的客户群列表 参数名必选类型说明uuid是String每个实例的唯一标识,根据uuid操作具体企业微信 请求示例 {"uuid": "1688853790533324","id":1101292747044333637, //群发任务id"keyword…

3.栈和队列(汇总版)

目录 1.栈(一端插和删) 2.队列(一端插另一段删) 2.1队列的概念及结构 2.2 队列的实现 队列的接口 1.初始化队列 2.销毁队列 3.插入元素 4.出队列(头删) 5.访问对头 6.访问队尾 7.判断队列是否为…

发布时间格式化工具函数

发布时间格式化工具函数 概述 本文档介绍了一套用于解析和格式化日期时间字符串的工具函数,旨在提供一种简便的方法来处理日期和时间数据,同时确保在不同设备和时区下的兼容性。 函数说明 parseDateString(dateString) 这个函数用于将一个符合特定格…

CMakeLists.txt语法规则:foreach循环的关键字

一. 简介 前一篇文章学习了 CMakeLists.txt语法中 foreach循环的基本用法。文章如下: CMakeLists.txt语法规则:foreach 循环基本用法-CSDN博客 本文继续 CMakeLists.txt语法中 foreach循环语句,主要学习 foreach循环中的关键字。 二. CM…

Android 官网Ota介绍

构建 OTA 软件包 | Android 开源项目 | Android Open Source Project

(网络初识)

网络发展史 独立模式 在最开始计算机被发明出来,但网络还未普及的情况下,每个计算机之间都是相互独立的: 假设现在有一份数据需要处理,然后这份数据的处理又分给三个人分别处理。假设小松处理进行第一部分的处理,当小…

Skywalking的重要功能详解

学习本篇文章之前首先要了解一下Sky walking的基础知识 分布式链路追踪工具Sky walking详解 一&#xff0c;Sky walking监控数据库 在admin服务中&#xff0c;连接数据库查询user表中所有数据 引入依赖 <dependency><groupId>mysql</groupId><artifactI…

上位机图像处理和嵌入式模块部署(树莓派4b和qt应用全屏占有)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 我们都知道&#xff0c;嵌入式应用一般都是为了某一个特定应用而存在的。也就是说&#xff0c;和pc不同&#xff0c;这个嵌入式板子一般都是为了解…

消息队列面试题(四)

1. 如何监控消息队列的性能和健康状况&#xff1f; 监控消息队列的性能和健康状况是确保系统稳定、高效运行的关键环节。以下是一些建议的步骤和策略&#xff1a; 1. 使用内置指标 许多消息队列系统&#xff08;如Kafka、RabbitMQ等&#xff09;都提供了丰富的内置指标&…

10分钟快速使用Prometheus监控nginx

配置 Nginx 以输出监控数据 修改 Nginx 配置&#xff1a; 在 Nginx 配置文件 /etc/nginx/nginx.conf 中的 server 块添加如下配置&#xff1a; location /stub_status {stub_status on;access_log off;allow 0.0.0.0/0;deny all; }重启 Nginx&#xff1a; 通过命令重启 Nginx 服…

List转字符串

List:[“a”,“b”,“c”] 转换后&#xff1a;a,b,c 1、String.join // 1. 创建一个List集合 数量不可变List<String> list List.of("a", "b", "c");//list [a, b, c]System.out.println("list " list);String join Strin…