一. 前言
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:编排容器文件










