首頁 > 軟體

使用docker部署django的詳細步驟

2022-08-21 14:00:55

docker概念

docker是一種容器技術,用來創造獨立的軟體容器,屬於作業系統的虛擬化技術,隔離的程序獨立於宿主和其他隔離的程序。

docker容器對比虛擬機器器

虛擬機器器:需要有必要的二進位制庫和完整的作業系統,並且佔據所有預分配的資源。

docker容器:與宿主共用作業系統,可以實現資源的動態分配,在使用者空間以分離的程序執行

docker映象、容器和倉庫

映象是檔案,容器是程序;他們之間的關係像是類和範例化物件的關係,一個類可以有多個範例化物件。而倉庫是一個其中的儲存、分發映象的服務。docker pull是從倉庫下載docker映象到本地,docker run是建立一個容器並執行一個命令,docker exec -it是在執行的容器中執行命令

docker安裝

根據自己的系統選擇安裝方式docker安裝

docker使用

1.簡單嘗試:使用docker pull nginx:latest下載一個最新的nginx映象。

2.使用命令docker run --name my-nginx -p 80:80 -d nginx:latest,建立一個容器,命令為my-nginx,-d表示後臺執行並返回容器的ID,-p將埠指定到宿主的80埠。開啟瀏覽器存取80埠

3.使用命令docker exec -it my-nginx bash開啟一個互動模式終端

其中第一步不是必須,在執行docker run命令時找不到映象時會自動從倉庫拉取

docker常見命令

命令作用
docker pull從倉庫下載映象
docker images檢視所有本地映象
docker rmi刪除映象
docker run建立容器並執行命令
docker rm刪除容器
docker stop停止容器,同理還有restart、start
docker logs檢視容器紀錄檔
docker exec bash進入容器中執行其他命令

單容器部署最基本的django

嘗試部署最基本的django專案

建立django專案

命令列輸入django-admin startproject mysite,進入建立的django資料夾中我們可以看見整個專案結構

此時我需要在專案根目錄下建立Dockerfile檔案,該檔案用於生成docker映象,內容如下

# 建立 python3.7 環境
FROM python:3.7

# 映象作者
MAINTAINER LALALA

# 設定 python 環境變數
ENV PYTHONUNBUFFERED 1

# 設定pip源為國內源
COPY pip.conf /root/.pip/pip.conf

# 在容器內建立mysite資料夾
RUN mkdir -p /var/www/html/mysite

# 設定容器內工作目錄
WORKDIR /var/www/html/mysite

# 將當前目錄檔案加入到容器工作目錄中(. 表示當前宿主機目錄)
ADD . /var/www/html/mysite

# pip安裝依賴
RUN pip install -r requirements.txt

繼續在專案根目錄下建立pip.conf檔案,用於修改pip映象源

[global] 
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

最後建立requirements.txt檔案,因為只需要django,只需要安裝django即可

Django==3.2.12

專案內容設定完後,在專案根目錄輸入命令docker build -t django_docker_img:v1 .建立映象,使用命令docker images檢視映象,可以看見剛剛建立的映象

Dockerfile中第一行是from python:3.7,也就是在建立過程中會從docker倉庫中拉取python:3.7的映象,速度過慢的話請修改你的docker映象源,可以直接在docker介面處修改,https://b2bk1nge.mirror.aliyuncs.com

輸入命令docker run -it -d -p 80:8000 --name mysite django_docker_img:v1建立並執行容器,此命名將該容器對映到本地80埠,使用docker ps檢視執行情況。然後使用命令docker exec -it mysite bash進入容器內部,會發現此刻處於Dockerfile中設定的工作目錄,該目錄下內容即為專案檔案內容,pip已安裝requirement.txt中的依賴

最後在容器的bash中執行下面命令,完成資料庫遷移和執行django專案

python manage.py makemigrations
python manage.py migrate
python manage.py runserver 0.0.0.0:8000 # 務必寫0.0.0.0,如果是127.0.0.1是容器的環回地址,會導致在宿主機中無法存取

此時在瀏覽器中存取http://127.0.0.1/可以看到執行的django專案

小結

本篇文章主要是嘗試性的使用docker來部署專案,學習過程中也是踩了一些坑,目前來看使用docker安裝映象很方便,之前在安裝需要的軟體時,往往會遇上各種各樣的小bug,而使用docker後只需要簡單地拉取映象建立容器,兩行命令解決所有煩惱。


IT145.com E-mail:sddin#qq.com