当前位置: 首页 > news >正文

怎样做个网站找客户的十大方法

怎样做个网站,找客户的十大方法,外贸seo网站推广,wordpress 艺人主题使用supervisor 管理docker内多进程 一般情况下,一个docker是仅仅运行一个服务的 但是有的情况中,希望一个docker中运行多个进程,运行多个服务,也就是一个docker容器执行多个服务。 调研了一下,发现可以通过**super…

使用supervisor 管理docker内多进程

一般情况下,一个docker是仅仅运行一个服务的

但是有的情况中,希望一个docker中运行多个进程,运行多个服务,也就是一个docker容器执行多个服务。

调研了一下,发现可以通过**supervisor ** 实现,综合对比下来,上手难度和配置相对来说还算简单

总的来说需要在单体服务的基础上做以下操作

  1. 编写supervisord.conf 配置文件
  2. 修改dockerfile文件,包括:下载supervisor, 修改docker入口
举例使用

下面来举例说明supervisor的简单使用:

比如下面的一个目录文件夹:

在这里插入图片描述

包含两个py文件,模拟两个不同的服务,一个服务process1 执行一个循环的进程(这里只是示例,可以是别的什么服务)

# process1.pyfrom multiprocessing import current_process
import time
import logginglogging.basicConfig(level=logging.INFO)
logger = logging.getLogger()def process1():while True:logger.info(f"i am process 1, in process {current_process().pid}")time.sleep(1)if __name__ == "__main__":process1()

process2 来运行一个fasapi服务,服务监听8096端口

import logging
import uvicornfrom typing import Unionfrom fastapi import FastAPIapp = FastAPI()@app.get("/")
def read_root():return {"Hello": "World"}@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):return {"item_id": item_id, "q": q}if __name__ == "__main__":uvicorn.run(app='run:app', port=8096, host="0.0.0.0")

现在我们有两个进程process1和process2需要在一个docker中运行,我们来看dockerfile实现:

FROM python:3.9-slim AS builderWORKDIR /app
# 这里将apt源修改为国内源,可选,如果有自己的配置,用自己的
COPY ./sources.list /etc/apt/RUN apt-get update \&& apt-get upgrade -y\&& apt-get install -y --no-install-recommends build-essential# 下载python包
COPY ./requirements.txt .
RUN pip install --upgrade pip
RUN pip install --no-cache-dir -r requirements.txt# 实际运行阶段
FROM python:3.9-slimWORKDIR /appCOPY --from=builder /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
COPY --from=builder /usr/local/bin/uvicorn /usr/local/bin/uvicornCOPY . .COPY ./sources.list /etc/apt/sources.list
# RUN cat /etc/apt/sources.list
# 安装 supervisor 和其他系统工具
RUN apt-get update && apt-get install -y --no-install-recommends supervisor \# 创建 supervisor 配置文件夹&& mkdir -p /etc/supervisor/conf.dEXPOSE 8096# 将 supervisor 配置文件复制到容器中
COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf# 启动命令
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

可见相对于单体进程,实际上只是添加和修改了下面这部分

# 安装 supervisor 和其他系统工具
RUN apt-get update && apt-get install -y --no-install-recommends supervisor \# && rm -rf /var/lib/apt/lists/* \&& mkdir -p /etc/supervisor/conf.d# # 创建 supervisor 配置文件夹
# RUN mkdir -p /etc/supervisor/conf.dEXPOSE 8096# 将 supervisor 配置文件复制到容器中
COPY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf# 启动命令
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

最后# 启动命令 CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]

需要根据我们创建的supervisord.conf 启动进程

来看supervisord.conf 的编写:

# supervisord 的配置
[supervisord]
nodaemon=true # 是否为守护进程
pidfile=/var/run/supervisord.pid
logfile=/var/log/supervisor/supervisord.log # supervisord.log的日志,可以看各个进程启动运行情况# 第一个进程 [program:{进程名}]
[program:process1]
command=python /app/process1.py # 启动命令 注意这里应该使用绝对路劲
autostart=true # 是否自动启动,设为true
autorestart=true # 是否自动重启
stderr_logfile=/var/log/supervisor/process1.err.log # log日志
stdout_logfile=/var/log/supervisor/process1.out.log[program:fastapi-process]
command=/usr/local/bin/uvicorn --host 0.0.0.0 --port 8096 process2:app # 启动命令uvicorn
autostart=true
autorestart=true
stderr_logfile=/var/log/supervisor/fastapi-process.err.log
stdout_logfile=/var/log/supervisor/fastapi-process.out.log

而后我们构建该镜像

docker build -t test_supervisor . 构建镜像

启动容器:

docker run -d -p 8096:8096 --name test_supervisor test_supervisor

但是这里查看两个进程的日志需要进到容器里面才行:

可见在容器中的/var/log/supervisor 中创建了几个日志文件正好是我们在supervisord.conf 中配置的文件

在这里插入图片描述

# 先进入容器 docker exec -it test_supervisor bash# 查看supervisor各进程启动情况
tail -f /var/log/supervisor/supervisord.log# 查看process1 的log输出日志
tail -f /var/log/supervisor/process1.err.log
#以此类推
http://www.yidumall.com/news/46758.html

相关文章:

  • 建设部执业注册网站seo网络科技有限公司
  • 网站构建器比百度好用的搜索软件
  • 科技通信网站模板下载搜狗搜索推广
  • 惠安县住房和城乡建设局网站大数据营销系统怎么样
  • 电子商务网站开发费用seo点击软件
  • 网站建设中怎么编辑图片百度seo排名优化排行
  • 做网站sqlserver排序seo权重优化
  • 用python做web的网站网店代运营收费
  • 建设企业网站的目的以及意义在线域名查询网站
  • 潍坊外贸建站最新app推广
  • 跟有流量的网站做友情链接facebook海外推广
  • 福田蒙派克优缺点seo实战密码电子版
  • 自己做网站代码廊坊网站建设优化
  • 二手商品网站的设计与建设论文楚雄今日头条新闻
  • 上海建设网站的公司青岛谷歌优化
  • 网站制作 万网廊坊网站建设公司
  • 婚纱摄影网站模板怎么做好网站搜索引擎优化
  • 做商城网站要什么证件免费seo工具大全
  • 17网站一起做网店睡衣武汉seo人才
  • 重庆网站建设工作室国际新闻消息
  • 北京网站关键词做电商需要什么条件
  • 河北建设工程信息网站百度seo排名曝光行者seo
  • 温州做网站建设公司哪家好东莞全网推广
  • 群晖nas可以做网站服务器云优化seo
  • 织梦网站系统千锋教育官方网
  • 沂源网站建设yx718免费的推广平台
  • 上海做网站比较有名的公司有哪些北京百度快照推广公司
  • 贵阳市公共住宅投资建设集团官方网站医院营销策略的具体方法
  • 做网站的文案是指友情链接价格
  • 平面设计专业网站优化大师优化项目有哪些