Docker部署Django+Mysql+Redis+Gunicorn+Nginx的实现

2020-06-17 07:00:05易采站长站整理

一. 前言

docker技术现在非常火热,通过容器构建项目环境,运行效率和部署效率都很不错。所以最近抽空看了一些教程,然后将博客部署方式改为了docker,感觉网上没有特别好的关于 docker 部署 django 项目的教程,特意写了这篇文章,算是记录自己的心得。

本次教程的测试环境为 Deepin ,主要侧重于 容器的编排Django 相关部署知识,一些细节方面,例如环境依赖安装,不会讲得特别详细。由于是在本地测试,所以在配置 nginx 相关信息时,将配置 http 代理而非 https 代理。

二. 环境依赖

部署方式选择了 docker 加 docker-compose,因此需要安装 docker 和 docker-compose。

docker 可以通过

sudo apt install docker-ce
命令安装。
docker-compose 可通过以下命令安装。


sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

安装完成以后,输入

docker version
,看到以下画面表示 docker 安装成功。

输入

docker-compose version
,看到以下画面表示 docker-compose 安装成功。

三. 部署分析

博客项目中使用到了 Django , Mysql , Redis , Nginx ,因此需要四个容器,每个容器对应一个应用,当然这些容器是有先后顺序的,也就是说存在依赖关系。然后通过 docker-compose 编排这四个容器,构建容器运行环境。

总共四个容器:

Redis 容器:缓存服务
Mysql 容器:数据存储
Django(Gunicorn)容器:处理动态请求
Nginx 容器:反向代理,处理静态资源

下面是容器的结构图。

容器依赖关系:Django 容器依赖 Redis 容器和 Mysql 容器,Nginx 容器依赖Gunicorn 容器。

四. 项目结构

看这个教程的小伙伴请尽量把目录和教程中目录保持 一致 ,否则在后续部署过程中极有可能会出错。

my_blog是 django 项目目录, deployment 文件夹放置了除 Django 容器外的三个容器配置信息。

Dockerfile:docker 环境文件

docker-compose.yml:编排容器文件