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

相關文章
相關標籤/搜索