1. 程式人生 > 其它 >python測試開發django-179.Dockerfile部署django和celery服務

python測試開發django-179.Dockerfile部署django和celery服務

前言

使用django開發專案帶celery服務的時候,需要同時啟動3個服務

  • python3 manage.py runserver 0.0.0.0:8000
  • python3 manage.py celery -A DjangoProjectName worker --loglevel=info >celery.out &
  • python3 manage.py celery beat --loglevel=info > celery.out

但是Dockerfile 裡面 CMD 命令只能啟動一個服務,於是想到寫一個start.sh

start.sh 和 shutdown.sh 檔案編寫

寫一個start.sh 檔案啟動3個服務

python3 manage.py celery -A DjangoProjectName worker --loglevel=info >celery.out  &
python3 manage.py celery beat --loglevel=info > celery.out &
python3 manage.py runserver 0.0.0.0:8000

注意:start.sh裡面前面的命令以&結尾,表示後臺服務,最後一個命令不以&結尾,表示前臺服務,必須要這樣,如果都是後臺服務,則執行完會直接退出,如果都是前臺服務,則只會執行第一條命令。

shutdown.sh 檔案內容

ps -aux | grep python| awk '{print $2}' | xargs kill -9

使用ps檢視python相關程序,kill 殺掉

Dockerfile 檔案編寫

FROM python:3.6.8
MAINTAINER yoyo <[email protected]>
# 替換debian映象地址改成阿里雲地址解決update更新慢的問題
RUN sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get update
RUN apt-get -y install vim
RUN apt-get -y install lrzsz
RUN pip install --upgrade pip --index-url https://pypi.douban.com/simple
# 建立work目錄
WORKDIR /code
ADD . /code
# 安裝依賴包
RUN pip install -r requirements.txt --index-url https://pypi.douban.com/simple
# 同步資料庫
RUN python manage.py makemigrations
RUN python manage.py migrate
# 給sh檔案執行許可權
RUN chmod u+x ./start.sh
RUN chmod u+x ./shutdown.sh
# 開放埠
EXPOSE 8000
# 執行啟動服務命令
ENTRYPOINT ["sh"]
CMD ["./start.sh"]

Dockerfile中ENTRYPOINT和CMD的區別,參考這篇https://www.jianshu.com/p/54cfa5721d5f

構建映象啟動服務

django專案根目錄有了Dockefile和start.sh檔案後,就可以構建本地映象

docker build -t yoyo .

啟動容器

docker run -d -p 8000:8000 --name a1 yoyo