打造專屬測試平台4-使用Docker部署Django項目


編寫完項目代碼后,為了穩定的運行,需要將其部署至服務器。這里我選擇了Docker去部署Django后端代碼。

首先來看看Runoob對Docker的介紹:

Docker 是一個開源的應用容器引擎,基於Go語言並遵從 Apache2.0 協議開源。

Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。

容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。

我自己的理解,Docker能夠大大降低開發人員移植環境時的復雜度,易於自動化部署,也易於不同環境之間相互隔離。

安裝Docker

Docker必須部署在 Linux 內核的系統上,如果其他系統想部署 Docker 就必須安裝一個虛擬 Linux 環境。所以Windows或者Mac用戶的官方安裝方式是安裝Docker Desktop客戶端,實質上還是在虛擬機中安裝Docker。

制作Docker鏡像

有以下兩種方式制作鏡像:

1.從已經創建的容器中更新鏡像,並且提交這個鏡像。下次想要復用時,則是從鏡像倉庫拉取該鏡像。

2.使用 Dockerfile 文件來創建一個新的鏡像,下次想要復用時,只需要使用docker build指令再次調用Dockerfile創建鏡像即可。

這里推薦第2種方式來制作鏡像,因為Dockerfile文件能夠清晰地記錄制作鏡像的具體步驟,方便作者去回顧以及保持鏡像簡潔。

以下是我制作鏡像時的Dockerfile文件:

FROM ubuntu:16.04

ENV LANG C.UTF-8
ENV TZ=Asia/Shanghai

RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list && \
    apt-get clean && \
    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
    apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y \
    software-properties-common &&\
    add-apt-repository ppa:deadsnakes/ppa &&\
    apt-get update && \
    apt-get install -y \
    python3.7 && \
    update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 1 && \
    apt-get install -y \
    libpython3.7-dev \
    python3-setuptools \
    python3-pip \
    git \
    tzdata && \
    dpkg-reconfigure --frontend noninteractive tzdata


WORKDIR /opt/workspace/TestPlatformBackend/

COPY . .

RUN  pip3 install -r ./requirements.txt -i \
    https://pypi.tuna.tsinghua.edu.cn/simple \
    --default-timeout=100

EXPOSE 5000

CMD bash ./start.sh

該Dockerfile基於ubuntu16.04系統,先安裝了python基礎環境,指定工作空間及拷貝項目代碼,然后安裝項目所需的python庫,最后運行指定的shell腳本。

shell腳本也較為簡單,用uWSGI啟動了Django項目,如果有不懂uWSGI的朋友,可以參看這篇文章《如何用uWSGI托管Django》進行了解。

#!/usr/bin/env bash
uwsgi --ini ./uwsgi.ini

值得一提的是,網上教程一般會采用uWSGI+Nginx去部署Django項目,而我這里只采用了uWSGI,原因是該測試平台是給內部人員使用且並發量不大,所以沒有用到Nginx,等需要時再加上。

使用Docker鏡像

在完成Dockerfile后,使用docker build指令創建Docker鏡像,例子中創建了名為testplatformbackend的鏡像。

docker build -t testplatformbackend .

創建完成后,使用該鏡像生成並運行容器,例子中運行了名為testplatformbackend的鏡像,並將容器的5000端口映射到了宿主機的9999端口上供訪問。

docker run -d -p 9999:5000 testplatformbackend

上述步驟,便實現了通過Docker來部署Django項目。

 

文章的最后聊個題外話,如果我們的項目代碼是在Windows系統上完成編寫,需要部署到Linux系統上時,請注意兩個系統對於文件路徑的兼容性問題。Windows系統是可以用符號'\'和'/'來表示路徑的,而Linux系統只能用后者來表示路徑。所以我們在寫路徑時,盡量用符號'/'。而拼接路徑時則盡量用os.path.join()函數去實現,因為它生成的路徑能兼容不同系統。如果遇到不得不轉換的路徑,則可以在使用路徑時采用str.replace('\\', '/')完成轉換。

 

參考資料

  • https://www.docker.com/
  • https://www.runoob.com/docker/docker-tutorial.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM