云服务器上利用Docker部署Django项目

一、准备条件

  1. 购买装有Linux系统的云服务器
  2. 添加安全组规则
    请参考官方文档
  3. 安装Docker
  4. 可运行的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,
    }
}



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

五、下载启动镜像

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

docker-compose up

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


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


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


云服务器上利用Docker部署Django项目_第1张图片
image



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


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


云服务器上利用Docker部署Django项目_第2张图片
image



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

六、创建数据表

命令行中输入以下命令


查看正在运行的docker容器


docker ps


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


docker exec -it NameOfYourContainer /bin/bash


建表


python manage.py makemigrations


python manage.py migrate


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

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

你可能感兴趣的:(云服务器上利用Docker部署Django项目)