python開發筆記-Python3.7+Django2.2 Docker鏡像搭建


***********************************************

補充參考:Python2.7+Django1.11 Docker鏡像搭建

ubuntu16.04 在線安裝docker ce

ubuntu16.04 離線安裝docker ce

************************************************

目標鏡像環境介紹:

操作系統:ubuntu16.04

python版本:python 3.7.4

django版本:2.2

操作步驟:

1.  本地安裝docker環境(略)
2. 拉取ubunut指定版本鏡像文件

 docker pull ubuntu:16.04

3. 指定映射端口,啟動容器

補充啟動容器注意點:
啟動的時候,加參數-t -it有區別, https://www.cnblogs.com/miracle-luna/p/11111852.html -i: 以交互模式運行容器,通常與 -t 同時使用; -t: 為容器重新分配一個偽輸入終端,通常與-i 同時使用; -it --若不加該參數,運行容器,發現容器雖然創建了,但是並沒有正常啟動,而你執行docker start *** 的時候,發現還是不能正常啟動,所以-i或-t參數也可以理解為,run容器時,必需加其中一個參數。 注意:一般加-t就可以,-i 或者 -it加上之后啟動容器,在執行docker attach XXX 命令看容器輸出的時候,若此時執行ctrl+C退出,會導致容器直接關閉。所以我一般習慣啟動容器的時候,加-d(后台進程啟動) -t 分配一個偽終端。 如下: docker run -d -p 8000:8000 --name dj22_py37 -t ubuntu:16.04

如下圖:ctrl + c 強制退出終端之后,容器並沒有關閉。

4. 進入容器,確認系統版本,安裝常用包,python3.7.4 pip3 django2.2

docker exec -u root -it dj22_py37 /bin/bash

鏡像比較干凈, 鏡像文件只有120M,並且里邊沒裝python

 

ubuntu16-docker環境-更換阿里源,提高軟件包安裝速度:

更換之前要先備份之前的源:

cp /etc/apt/source.list /etc/apt/source.list.bak

編輯源列表文件

vim/etc/apt/sources.list

將原來的列表刪除,替換:

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

更新:

apt-get update

先安裝zip vim 等包

apt-get install zip
apt-get install vim

OK,開始安裝當前最新版python3.7.4  

下載地址:https://www.python.org/downloads/

也可以通過如下FTP地址下載:https://www.python.org/ftp/python/3.7.4/

下載到本地后,文件大小:

將該文件上傳到容器內部,解壓:

先安裝python依賴環境:
apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev

--時間較長,耐心等待

解壓python壓縮文件:
tar -zxvf Python-3.7.4.tgz 

解壓后,進入目錄:
cd Python-3.7.4

建立本地安裝目錄:
mkdir -p /usr/local/python3

編譯安裝:
---執行這步時,建議后邊加上參數:--enable-optimizations 字面意思就是"開啟優化",會自動安裝pip3及優化配置,
---但是這會造成編譯安裝需要較長到時間,如果網絡環境不穩定,或者着急使用python環境,可以不加該參數!!! .
/configure --prefix=/usr/local/python3 --enable-optimizations make #耐心等待 make install

到此,本地編譯安裝已完成

這里由於是純凈的環境,假如同學你本地環境之前安裝過python,則需要將原先/usr/bin/下的python相關鏈接刪除,要不即使你安裝了新的python,但是系統默認還會讀取你原先的環境。

通過如下命令刪除舊的環境軟鏈接配置,這塊操作謹慎!!!---本地原先沒有python環境的同學,可以忽略如下步驟,跳過執行下一步。

rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3

建立軟鏈接,將本地編譯安裝的/user/local/python下的執行文件 指向/user/bin下

#添加python3的軟鏈接 
---如果本地環境沒有裝python2,也不打算用python2,可以直接將鏈接指向寫成/usr/bin/python,也是可以的,這樣每次進入終端環境或者運行程序,直接輸入python就可以,但是還是建議2和3區分開指向。
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
#添加 pip3 的軟鏈接
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3

驗證版本:

root@c3af9f44f7f7:/# python3 -V
Python 3.7.4
root@c3af9f44f7f7:/# pip3 -V
pip 19.0.3 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)

OK,至此,python3.7.4 環境安裝完成。

 

下一步開始安裝:django 2.2

參考官方文檔:https://www.djangoproject.com/download/

因為我們上邊安裝的是pip3,所以安裝命令需要改成如下:

pip3 install Django==2.2.4

安裝完成后,查看Django版本

python3
import django 
django.get_version()

安裝django框架下,python連接postgresql的驅動: psycopg2

pip3 install psycopg2
直接安裝出現如下錯誤:

網絡查找ubuntu環境下,報錯原因:---小伙伴們注意,如下處理方式只適用於解決ubunut下的安裝異常,對於其他系統的異常如下內容請作選擇性參考!!!

Error: pg_config executable not found.
pg_config is in postgresql-devel (libpq-dev in Debian/Ubuntu)

1)安裝libpq-dev
apt-get install libpq-dev python-dev
2)然后重新執行:
pip3 install psycopg2

------------------------------------------------------
root@c3af9f44f7f7:/# pip3 install psycopg2
Collecting psycopg2
  Using cached https://files.pythonhosted.org/packages/5c/1c/6997288da181277a0c29bc39a5f9143ff20b8c99f2a7d059cfb55163e165/psycopg2-2.8.3.tar.gz
Installing collected packages: psycopg2
  Running setup.py install for psycopg2 ... done
Successfully installed psycopg2-2.8.3
You are using pip version 19.0.3, however version 19.2.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
root@c3af9f44f7f7:/# 

驗證版本:

OK, 至此基礎環境已經配置完成。

 
我們將鏡像提交,打包,這樣團隊其他小伙伴,就可以直接應用了,並且保證了大家的基礎開發環境一致,並且還有個好處,如果線上生產環境是docker部署的話,這個鏡像還可以直接應用於后續的生產環境。
docker commit c3af9f44f7f7 dj22_py37:1.0
---耐心等待

鏡像創建成功,可以打包備份:

docker save dj22_py37:1.0  -o  /home/dj22_py37.tar 

 


免責聲明!

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



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