Django容器(上):自定義基礎(chǔ)鏡像-創(chuàng)新互聯(lián)

開始之前

某個 Python 項目,基于 Python:3.6Django:1.11 框架開發(fā),希望項目能夠容器化,然后可以通過 docker-compose 等工具編排容器/應(yīng)用,本篇文章的目標(biāo)是自定義Django基礎(chǔ)鏡像

創(chuàng)新互聯(lián)不只是一家網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司;我們對營銷、技術(shù)、服務(wù)都有自己獨特見解,公司采取“創(chuàng)意+綜合+營銷”一體化的方式為您提供更專業(yè)的服務(wù)!我們經(jīng)歷的每一步也許不一定是最完美的,但每一步都有值得深思的意義。我們珍視每一份信任,關(guān)注我們的網(wǎng)站設(shè)計制作、成都做網(wǎng)站質(zhì)量和服務(wù)品質(zhì),在得到用戶滿意的同時,也能得到同行業(yè)的專業(yè)認(rèn)可,能夠為行業(yè)創(chuàng)新發(fā)展助力。未來將繼續(xù)專注于技術(shù)創(chuàng)新,服務(wù)升級,滿足企業(yè)一站式全網(wǎng)整合營銷推廣需求,讓再小的成都品牌網(wǎng)站建設(shè)也能產(chǎn)生價值!

與《為什么需要自定義一個基礎(chǔ)鏡像?》文章相同,基礎(chǔ)鏡像作用是為項目鏡像提供支持。它構(gòu)建在 Python 官方鏡像之上,添加項目一些需要的擴展模塊,例如 Djangopymysql、Gunicorn等常用模塊,具體以項目實際需求為準(zhǔn)。

最后為能夠高效的處理靜態(tài)文件請求,使用 Nginx 反向代理 Django 應(yīng)用,不過這是下一篇文章要講的了,《Django容器(下): 使用Gunicorn管理Django》,敬請期待 公眾號每周四 docker專題更新文章。。

環(huán)境描述
容器鏡像: python:3.6
容器系統(tǒng): debian 9 (stretch)
Docker版本: CE - 17.06.0
Docker主機: Ubuntu Server 16.04
操作步驟
  1. 基礎(chǔ)鏡像構(gòu)建目錄
tree base/

base/
├── conf
│?? ├── 404.html
│?? ├── default.conf
│?? ├── nginx.conf
│?? ├── requirements.txt
│?? ├── sources.list
│?? ├── ssl
│?? │?? ├── domain.crt
│?? │?? └── domain.key
│?? └── supervisord.conf
└── `Dockerfile`

2 directories, 9 files
  1. 基礎(chǔ)鏡像 Dockerfile 文件
cat base/Dockerfile

# start-base
FROM python:3.6
MAINTAINER dongnan #<@微信公眾號:運維錄>

# apt
COPY conf/sources.list /etc/apt/sources.list
RUN apt-get update \
    && apt-get install -y supervisor nginx \
    && apt-get clean \
    && rm -r /var/lib/apt/lists/*

# env
ENV TZ=Asia/Shanghai \
    LANG=en_US.UTF-8

# django 
COPY conf/requirements.txt /root/
RUN pip --no-cache-dir install -r /root/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

這個 Dockerfile 很短,因為是項目基礎(chǔ)鏡像,只做一些基礎(chǔ)工作就可以了。
它首先安裝 supervisor nginx 軟件包,然后是設(shè)置容器的環(huán)境變量。
最后使用 pip 安裝項目依賴,django 、pymysql 都在 requirements.txt 這個文件中定義。

  1. 構(gòu)建鏡像
docker build -t start-base .

Sending build context to Docker daemon    767kB
Step 1/8 : FROM python:3.6
# ...省略
Successfully built fc3f6f242301
Successfully tagged start-base
  1. 驗證鏡像
    基礎(chǔ)鏡像準(zhǔn)備完畢后,就可以在項目鏡像使用了,這里沒有為基礎(chǔ)鏡像添加 TAG 標(biāo)記,所以它是默認(rèn)的 latest 。
docker images --format "{{.Repository}} {{.Tag}}" 

start-base latest
小結(jié)

最后來總結(jié)下文章中的知識點

  • 基礎(chǔ)鏡像作用是為項目鏡像提供支持,并在基礎(chǔ)鏡像之上添加項目代碼,完成項目鏡像構(gòu)建工作。
  • 使用 supervisor 在容器中管理 nginx、gunicorn (python WSGI Server)進程。
  • pippython 包管理工具,該工具提供了對python 包的查找、下載、安裝、卸載的功能。
  • pip -i 選項, 指定倉庫地址,默認(rèn)為 https://pypi.org/simple,**速度很慢**建議使用國內(nèi)倉庫。

參考文章
doker&k8s Qun [703906133]

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前名稱:Django容器(上):自定義基礎(chǔ)鏡像-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://muchs.cn/article12/djhddc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、網(wǎng)站制作手機網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計公司域名注冊、網(wǎng)站收錄

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)