本篇描述了制作一个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
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 了