一、准备条件

购买装有Linux系统的云服务器

添加安全组规则

请参考官方文档

安装Docker

可运行的Django项目

二、Dockerfile编写

在项目文件夹下新建名为Dockerfile的文件,内容如下

FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

把项目运行需要用到的第三方库写在requirements.txt

例如本博客使用的requirements.txt

mongoengine
Django==1.11
mysqlclient
Markdown
Pygments

其中mongoengine用于使用MongoDB、Markdown用于把markdwon语法转换成html代码、Pygments用于代码高亮,这些库具体的用法请自行探讨

以上可根据项目灵活选择需要安装的库

三、docker-compose.yml 文件的配置

在项目文件夹下新建名为docker-compose.yml的文件,如果使用mysql数据库的话,可以配置如下(使用其他数据库配置方法大概相似)

version: '2'
services:
db:
image: mysql
expose:
- "3306"
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=YourDatabaseName
- MYSQL_ROOT_PASSWORD=YourPassWord
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 6061:80
links:
- db
web:
build: .
command: python manage.py runserver 0.0.0.0:80
volumes:
- .:/code
ports:
- "80:80"
links:
- db

其中PHPmyadmin用来可视化mysql数据库,这里让它运行在6061端口

更多关于Docker的知识请参考官方文档

四、配置Django项目的settings.py的数据库设置

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': YourDatabaseName,
'USER' : root,
'PASSWORD' : YourPassWord,
'HOST' : YourIPAddress,
'PORT' : 3306,
}
}

注意,NAME和PASSWORD必须根Dockercompose.yml中配置的数据库名和密码一致

五、下载启动镜像

把项目代码上传到服务器,进入项目文件夹,命令行中输入如下命令

docker-compose up

该命令会下载docker-compose.yml中给定的镜像和Dockerfile中需要使用的库(如果以后要扩展requirements.txt中的库的话,需要执行docker-compose build命令重建镜像),下载完成之后会尝试运行镜像。

ps: 如果第一次启动不成功的话请多尝试几次

一切顺利的话会看到如下提示


image

在浏览器上输入IP地址就可以访问到您的Django应用了

访问http://yourIP:6061可以看到phpMyadmin的登录界面


image

输入您的数据库用户名密码即可登录,登陆之后您会发现数据库里面没有数据表,这是因为还没有创建数据表

六、创建数据表

命令行中输入以下命令

查看正在运行的docker容器

docker ps

进入主容器(运行django项目的容器)

docker exec -it NameOfYourContainer /bin/bash

建表

python manage.py makemigrations

python manage.py migrate

最后,开始愉快的编码吧!

以上教程若有任何错误请留言指出,有疑惑欢迎联系我