手裏有一個web項目,代碼按照前端代碼庫、後端代碼庫分別在GitHub上,分散帶來的結果是,不容易持續集成,好比你可能須要不少的job去保證一個項目的正常運做,可是這個項目也不是特別大,因此嘗試將代碼融合,於此同時將代碼docker化,用於持續部署。前端
原來的代碼使用gunicorn+gevent+supervisor+flask+DB的架構;具體的細節以下:python
首先咱們須要將DB和Flask App拆分開,使用supervisor將包括DB在哪的全部進程,都控制在一塊兒,因此咱們須要經他們分開:nginx
構建flask app的dockerfileweb
因爲以前的supervisor是安裝在centos中的,咱們代碼使用python3,因此在centos上裝了一個虛擬環境,用於跑flask代碼,因此咱們使用python:3.6-slim爲基礎鏡像;在使用apline鏡像的時候,不能安裝一些依賴,包括supervisor,因此我選擇了slim,後面拆分的時候由於supervisor在slim中,每次啓動都有問題,因此我放棄了supervisor,這樣你也可使用apline,可是我仍是保持了slim;redis
FROM python:3.6-slim COPY . /app WORKDIR /app RUN pip install -i https://pypi.douban.com/simple -r requirements.txt EXPOSE 5000 ENV FLASK_APP=manage.py
flask run --host 0.0.0.0; flask wdb; flask broadcast;