python測試開發django-179.Dockerfile部署django和celery服務
阿新 • • 發佈:2021-12-27
前言
使用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