一、准备条件
- 购买装有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: 如果第一次启动不成功的话请多尝试几次
一切顺利的话会看到如下提示
在浏览器上输入IP地址就可以访问到您的Django应用了
访问
http://yourIP:6061
可以看到phpMyadmin的登录界面输入您的数据库用户名密码即可登录,登陆之后您会发现数据库里面没有数据表,这是因为还没有创建数据表
六、创建数据表
命令行中输入以下命令
查看正在运行的docker容器
docker ps
进入主容器(运行django项目的容器)
docker exec -it NameOfYourContainer /bin/bash
建表
python manage.py makemigrations
python manage.py migrate
最后,开始愉快的编码吧!
以上教程若有任何错误请留言指出,有疑惑欢迎联系我