circus 是由mozilla 团队开发基于python 以及zeromq 的进程以及socket 管理的工具,类似supervisord
但是比supervisord 更灵活方便

来自官方的使用比较

  • supervisord的

  • 来自circus 的

docker 集成shiyong

搜索docker hub 对于circus 的镜像并不是很多,而且文档也不是很清晰,所以自己使用
pip 包安装的方式做了了一个简单的,方便测试,目前有一个bug,还在确定原因

  • 项目结构
 
├── Dockerfile
├── Dockerfile-Test
├── README.md
├── circus.ini
├── docker-compose.yaml
└── entrypoint.sh
 
 
  • 代码说明
    Dockerfile: circus docker 镜像文件(构建)
 
FROM python:slim-stretch
LABEL AUTHOR="dalongrong"
LABEL EMAIL="1141591465@qq.com"
RUN apt-get update && apt-get install -y --reinstall build-essential \
    && pip install circus circus-web chaussette \
    && apt-get remove -y --purge build-essential \
    && rm -rf /var/lib/apt/lists/*

Dockerfile-Test: 测试镜像使用的(基于上边构建的镜像)

FROM dalongrong/circus
WORKDIR /app
COPY circus.ini /app/
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
 

circus.ini: demo 运行circus 配置,使用自带的demo

[circus]
statsd = True
httpd = False
​
[watcher:webapp]
cmd = /usr/local/bin/chaussette --fd $(circus.sockets.web)
numprocesses = 5
use_sockets = True
​
[socket:web]
host = 0.0.0.0
port = 9999
 
 

entrypoint.sh: demo 镜像的entrypoint

#!/bin/sh
circusd /app/circus.ini

docker-compose.yaml 使用docker-compose 构建镜像以及运行demo

version: "3"
services: 
  circus:
    build: ./
  web:
    build: 
      dockerfile: Dockerfile-Test
      context: ./
    ports: 
    - "9999:9999"
    - "8080:8080"

构建&&运行

  • 构建
    为了加速以及方便构建使用了docker hub 的构建功能,只需要添加github 集成即可,构建好的
    镜像名称 dalongrong/circus
  • 使用
 
docker-compose up -d web
  • 访问效果

说明

当前对于circushttpd web 配置的集成是有问题的,异常信息如下,还在解决中

web_1 | SyntaxError: invalid syntax
web_1 | Traceback (most recent call last):
web_1 | File "<string>", line 1, in <module>
web_1 | File "/usr/local/lib/python3.7/site-packages/circusweb/circushttpd.py", line 25, in <module>
web_1 | import tornadio2
web_1 | File "/usr/local/lib/python3.7/site-packages/tornadio2/__init__.py", line 25, in <module>
web_1 | from tornadio2.router import TornadioRouter
web_1 | File "/usr/local/lib/python3.7/site-packages/tornadio2/router.py", line 27, in <module>
web_1 | from tornadio2 import persistent, polling, sessioncontainer, session, proto, preflight, stats
web_1 | File "/usr/local/lib/python3.7/site-packages/tornadio2/persistent.py", line 143
web_1 | except Exception, ex:
web_1 | ^
web_1 | SyntaxError: invalid syntax

参考资料

https://circus.readthedocs.io/en/latest/faq/
https://github.com/rongfengliang/circus-docker
https://cloud.docker.com/repository/docker/dalongrong/circus

circus 进程以及socket 管理工具&&docker运行的更多相关文章

  1. 使用YApi搭建API接口管理工具(docker安装)

    使用YApi搭建API接口管理工具(docker安装) 工具描述 YApi 是高效.易用.功能强大的 api 管理平台,旨在为开发.产品.测试人员提供更优雅的接口管理服务.可以帮助开发者轻松创建.发布 ...

  2. ubuntu问题: 同时只能有一个软件管理工具在运行

    或者是: 只能同时运行一个更新管理器 打开终端输入命令:sudo dpkg –configure -a 运行,系统问题就解决了

  3. Docker可视化管理工具Shipyard安装与配置

    Shipyard简介 Shipyard是一个集成管理docker容器.镜像.Registries的系统,它具有以下特点: 1.支持多节点的集成管理 2.可动态加载节点 3.可托管node下的容器 镜像 ...

  4. Django-admin管理工具

    知识预览 admin组件使用 admin源码解析 admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目 ...

  5. Python学习(四十三)—— Djago-admin管理工具

    一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...

  6. Django 之 admin管理工具

    -------------------------------------------------------------------------妄尝恶果,苦果自来. admin组件使用 Django ...

  7. Django的 admin管理工具

    admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...

  8. Django框架 之 admin管理工具(组件使用)

    Django框架 之 admin管理工具(组件使用) 浏览目录 激活管理工具 使用管理工具 admin的定制 admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理 ...

  9. Django——admin管理工具

    一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...

随机推荐

  1. pyspider 数据存入Mysql--Python3

    一.不写入Mysql 以爬取哪儿网为例. 以下为脚本: from pyspider.libs.base_handler import * class Handler(BaseHandler): cra ...

  2. Unity - 简单实现音频管理系统

    简单实现Unity音频管理脚本,便于长短音频的播放控制和音量控制等,核心方法为对象池的应用. 项目地址:AudioPlay - SouthBegonia 包含方法: 持有所有 AudioSource ...

  3. selenium中的元素操作之三大切换(二)

    一.窗口切换 使用方法: 1.获取到打开的所有的窗口,句柄handles all_handles = driver.window_handles print(all_handles) 2.获取当前的窗 ...

  4. Spring AOP无法拦截Controller的原因

    因为Spring的Bean扫描和Spring-MVC的Bean扫描是分开的, 两者的Bean位于两个不同的Application, 而且Spring-MVC的Bean扫描要早于Spring的Bean扫 ...

  5. 设计模式-依赖倒置-Dependency Inversion Principle

    依赖倒置原则: 一般来说我们认为作为底层基础框架的逻辑是不应该依赖于上层逻辑的, 所以我们设计软件时也经常是: 需求 - 上层逻辑(直接实现需求) - 发现需要固化的逻辑 - 开发底层模块 - 然后上 ...

  6. Android常用优秀开源框架整理

    前言 AOSF:全称为Android Open Source Framework,即Android优秀开源框架汇总.包含:网络请求okhttp,图片下载glide,数据库greenDAO,链式框架Rx ...

  7. 首次使用DoNetCore EFCore DbFirst

    环境 Visual Studio 2017 开始搭建项目 1.在 Visual Studio 2017 中创建新项目 “文件”>“新建”>“项目” 从左侧菜单中选择“已安装”>“模板 ...

  8. idea 启动项目报错,more than one fragment with the name [spring web] was found

    这是由于idea导入项目的时候有多个模块,并且有多个web.xml导致的,先删除对应的模块,后启动即可. 另外也有可能是spring的jar冲突,把冲突的jar删除即可.

  9. Hive使用过程中踩过的坑

    hive启动时错误1 Cannot execute statement:impossible to write to binary long since BINLOG_FORMAT = STATEME ...

  10. linux服务器中安装VSCode

    Centos7系统 步骤:在linux系统中安装VSCode(Visual Studio Code) 1.从官网下载压缩包访问Visual Studio Code官网 https://code.vis ...