本篇描述了制作一個docker+django的鏡像。
其中uwsgi,supervisor 這兩工具是為了后續采用nginx 服務器所安裝的,本篇測試不需要這些。只是用了django的自帶測試服務器測試。
1,首先下載 docker +ubuntu 基礎鏡像
docker pull ubuntu
下載完畢后
docker images
查看結果:
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 4c108a37151f 33 hours ago 64.2MB
2,運行容器
docker run -it ubuntu bin/bash
進入命令行模式:
查看ubuntu 版本,cat /etc/issue ,我當前下載版本 Ubuntu 18.04.2 LTS \n \l
3,安裝python環境
apt-get install python3
python=python3
運行 python控制台:
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
默認安裝了3.6.8 版本,ctrl+D 退出python 控制台
4,安裝pip3
由於上面安裝的是python3 ,所以安裝pip3工具
apt install python3-pip
5,安裝djgano
pip3 install Django
安裝完畢后查看django版本:
python:
import django
django.get_version()
'2.2.2'
安裝完畢django 2.2.2 版本
6 制作鏡像
docker commit -m="python3+django2" -a="zhj" 9af3cf56dbec ubuntu:django
7, 安裝Django和mysql連接的驅動 pymysql
git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL
python3 setup.py install
由於ubuntu:django鏡像上沒有git命令,所以要么安裝git,要么采用另外一種方式解決,我采用了第二種。
在宿主機上下載:
git clone https://github.com/PyMySQL/PyMySQL
放在目錄/home/andrew下
然后運行容器:
docker run -it -v /home/andrew:/home/andrew django bin/bash
-v /home/andrew:/home/andrew 表示將容器中/home/andrew目錄掛載到宿主機的/home/andrew上。
現在瀏覽容器的/home/andrew,
cd PyMySQL
python3 setup.py install
完成pymysql的安裝
8,安裝 uwsgi
pip3 install uwsgi
9,安裝supervisor
一個專門用來管理進程的工具,我們用它來管理 uwsgi 進程.
pip3 install supervisor
10, 安裝vim
apt-get install vim
11, 運行一個django工程
運行我自己建的一個django工程
python3 manage.py runserver 0.0.0.0:8000,
報錯如下:
/usr/local/lib/python3.6/dist-packages/django/db/backends/mysql/base.py", line 36, in <module>
raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
修改如下:
把文件base.py中的這些內容注釋掉:
#if version < (1, 3, 13):
# raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)
12,測試
docker commit -m="python3+django2" -a="zhj" 8af3cf56dbdc ubuntu:django1 (制作鏡像的步驟根據自己的安裝情況而定,上面步驟中可出現多次制作,自己決定啦)
制作一個新鏡像
運行該鏡像
docker run -p 8083:8000 -it -v /home/andrew/django/test/project:/home/andrew ubuntu:django1 bin/bash
運行django
python3 manage.py runserver 0.0.0.0:8000
在瀏覽器上訪問 192.168.21.59:8083/admin,出現django登錄頁面。測試成功。(192.168.21.59,我的主機名)
13,后續,下一篇該嘗試nginx部署運行django 了