Docker + gunicron + supervisord 部署python应用

首先要看一下项目的一些基本目录结构

  • requirement.txt (项目的安装包文件)
  • supervisord.conf ( 监控启动文件)
[supervisord]
nodaemon=true
[program:myapp]
command=/usr/local/bin/gunicorn -c /myapp/gun.conf manager:app
directory=/
user=root
autostart=true                ; 随着supervisord的启动而启动
autorestart=true              ; 自动重启。。固然要选上了
startretries=10               ; 启动失败时的最多重试次数
exitcodes=0                 ; 正常退出代码(是说退出代码是这个时就再也不重启了吗?待肯定)
stopsignal=KILL               ; 用来杀死进程的信号
stopwaitsecs=10               ; 发送SIGKILL前的等待时间
redirect_stderr=true          ; 重定向stderr到stdout
stdout_logfile =/var/log/myapp/server.log
  • gun.conf ( gunicorn启动配置文件)
import os
bind='0.0.0.0:80'
workers=2
backlog=2048
worker_class="egg:meinheld#gunicorn_worker" #sync, gevent,egg:meinheld#gunicorn_worker(don't supports windows)
debug=True
proc_name='gunicorn.pid'
pidfile='/myapp/debug.log'
loglevel='info'
  • Dokerfile (osc的代码生成在dockerfile好像有问题 不能换行,我用在线编辑器复制过来也不行,因此干脆直接换行)

FROM python:2.7
MAINTAINER Feng_v
RUN mkdir /myapp
RUN mkdir -p /var/log/myapp
RUN mkdir -p /etc/supervisor
RUN mkdir -p /etc/supervisor/conf.d/
RUN touch /var/log/myapp/server.log
COPY . /myapp
WORKDIR /myapp
RUN pip install -r requirements.txt
RUN echo_supervisord_conf > /etc/supervisor/supervisord.conf
RUN echo "[include]" >> /etc/supervisor/supervisord.conf
RUN echo "files = /etc/supervisor/conf.d/*.conf" >> /etc/supervisor/supervisord.conf
RUN mv supervisord.conf /etc/supervisor/conf.d
EXPOSE 80
CMD ["/usr/local/bin/supervisord"]python

#而后咱们到docker服务器中构建docker镜像docker

docker build -t myapp . 构建docker镜像命令 (在当前myapp目录下)windows

等待构建好了之后就能够运行docker镜像

docker run -d -p 80:80 -d -it myapp 运行docker容器服务器

#至此一来就能够用docker来启动python应用了。app

相关文章
相关标签/搜索