日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue

發布時間:2025/4/5 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

* 1、兩年前接觸docker是因為要部署selenium_gird,后來呢發現zalenium可以錄制ui自動化視頻的工具,都是直接pull鏡像,啟動容器。所以一直以來就只用到了pull、 run、 rm等簡單的命令。開發一直是把代碼部署到docker里的,這對于我來說一直是個疑問。上周趁著項目不緊張 ,就來解惑以下,首先就把我二次開發的接口平臺來部署下把(https://testerhome.com/topics/25144),忙碌了一周也終于部署到外網了,也在這里將簡單好理解的部署方法分享給大家。

準備工作

* 1、首先 要有一臺linux系統 ,筆者在這里選擇了騰訊云的95一年的服務器,用來學習還不錯(https://cloud.tencent.com/act/anniversary/product)

* 2、登錄到linux系統后,下載docker 并啟動(這步驟教給你們了,百度很多例子)

* 3、項目準備,我這里用到了后端django,前端vue

4、WinSCP用來將代碼上傳到linux(有很多途徑可以上傳,我這里選擇了簡單的方法)

5、https://www.cnblogs.com/jiefu/p/12204555.html docker部署 mysql請參考這個鏈接一步步配置就可以了,很簡單哦(django要鏈接數據庫)

部署django,文件目錄如圖

* 1、uWSGI是一種web服務器,是實現了uwsgi和WSGI兩種協議的Web服務器,類似Apache和Ngin'x(https://blog.csdn.net/gymaisyl/article/details/85038932有詳細的介紹)

2、Dockerfile用來創建鏡像

3、我們之前啟動django都是用python manage.py runserver 來啟動的,這次我們uwsgi啟動來部署到外網

4、我這邊根目錄是DockerProject,下面兩個文件夾api_automation_test(代碼),compose(docker-compose.yml,用來編排dockerfile的)

#### 每個文件的內容

* 1、Dockerfile內容,只需要替換api_automation_test項目目錄名字即可

# 建立 python3.7 環境

FROM python:3.6

# 設置 python 環境變量

#ENV PYTHONUNBUFFERED 1

# 在容器內/var/www/html/下創建 mysite1文件夾

RUN mkdir -p /var/www/html/api_automation_test

# 設置容器內工作目錄

WORKDIR /var/www/html/api_automation_test

# 將當前目錄文件加入到容器工作目錄中(. 表示當前宿主機目錄)

ADD . /var/www/html/api_automation_test

#下載第三方包

RUN pip install https://github.com/darklow/django-suit/tarball/v2

RUN pip install -i https://pypi.doubanio.com/simple uwsgi

RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt

# Windows環境下編寫的start.sh每行命令結尾有多余的\r字符,需移除。

RUN sed -i 's/\r//' ./start.sh

# 設置start.sh文件可執行權限

RUN chmod +x ./start.sh

* 2、uwsgi_.ini內容,此處是對啟動uwsgi做出的配置,更多配置參數可以去百度看下

[uwsgi]

#api_automation_test是我代碼的路徑

project = api_automation_test

uid = root

gid = root

base = /var/www/html

chdir = %(base)/%(project)

module = %(project).wsgi:application

master = True

processes = 2

http = 0.0.0.0:8020 #這里直接使用uwsgi做web服務器,使用http。如果使用nginx,需要使用socket溝通。

buffer-size = 65536

pidfile = /tmp/%(project)-master.pid

vacuum = True

max-requests = 5000

daemonize = uwsgi.log

# 解決APSchedler任務不能執行

threads=4

enable-threads = true

preload = true

lazy-apps = true

#設置一個請求的超時時間(秒),如果一個請求超過了這個時間,則請求被丟棄

harakiri = 60

#當一個請求被harakiri殺掉會,會輸出一條日志

harakiri-verbose = true

* 3、start.sh內容

#!/bin/bash

# 從第一行到最后一行分別表示:

# 1. 生成數據庫遷移文件

# 2. 根據數據庫遷移文件來修改數據庫

# 3. 用 uwsgi啟動 django 服務, 不再使用python manage.py runserver

#python manage.py collectstatic --noinput&&

python manage.py makemigrations&&

python manage.py migrate&&

uwsgi --enable-threads /var/www/html/api_automation_test/uwsgi.ini

開始部署docker

* 1、首先將我們的代碼用WinSCP放到linux上,cd 到我們的 api_automation_test目錄

執行如下命令創建鏡像,注意最后面有個點.

docker build -t django_web .

* 2、創建鏡像中

* 3、創建完成

* 4、docker images查看我們剛才創建的鏡像

* 5、 啟動容器

docker run -it --name MyDjango -p 8020:8020 -d django_web

* 6、 查看創建成功的容器

docker ps

* 7、進入容器內部執行shart.sh

docker exec -it MyDjango /bin/bash

sh start.sh

7、這個時候我們后端項目已啟動成功,接下來訪問下接口

部署vue,項目結構如圖所示

1、Dockerfile內容,直接copy不用改內容

# nginx鏡像

FROM nginx:latest

# 刪除原有配置文件,創建靜態資源文件夾和ssl證書保存文件夾

RUN rm /etc/nginx/conf.d/default.conf \

&& mkdir -p /usr/share/nginx/html/static \

&& mkdir -p /usr/share/nginx/html/media \

&& mkdir -p /usr/share/nginx/ssl

COPY dist/ /usr/share/nginx/html/

# 添加配置文件

COPY nginx.conf /etc/nginx/nginx.conf

# 構建鏡像時執行的命令

RUN echo 'echo init ok!'

2、cd到frontend文件夾下,創建鏡像

docker build -t vue_web .

3、啟動容器

docker run -it -p 80:80 --name vue_web_c \

-d vue_web

4、至此前后端都已啟動成功

注:

1、后續會再講下如何用compose一鍵創建多個鏡像、啟動多個鏡像,這樣我們部署就會更方便

2、有疑問可以加我微信咨詢哦liuxiaolu4986

總結

以上是生活随笔為你收集整理的python django部署docker_Docker 部署 Django+Uwsgi+Nginx+Vue的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。