Django系列教程(27)——Docker部署
目录
Docker及Docker-Compose的安装
Django + Uwsgi + Nginx + MySQL + Redis组合容器示意图
Docker-compose部署Django项目布局树形图
第一步:编写docker-compose.yml文件
第二步:编写Web (Django+Uwsgi)镜像和容器所需文件
第三步:编写Nginx镜像和容器所需文件
第四步:编写Db (MySQL)容器配置文件
第五步:编写Redis 容器配置文件
第六步:修改Django项目settings.py
第七步:使用docker-compose 构建镜像并启动容器组服务
第八步:排错
Nginx容器排错
Web容器排错
数据库db容器排错
Django在生产环境的部署还是比较复杂的, 令很多新手望而生畏, 幸运的是使用Docker容器化技术可以大大简化我们Django在生产环境的部署并提升我们应用的可移植性。Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux机器上。本文将详细介绍如何使用docker-compose八步部署Django + Uwsgi + Nginx + MySQL + Redis (多容器组合)。
本文假设Django, MySQL, Redis和Nginx都是部署到同一台服务器上,支持最新Django 3.2、MySQL 8和Python 3.9版本,其中很多配置文件有非常大的参考价值,建议先收藏再阅读。
注意:本文侧重于Docker技术在部署Django时的实际应用,而不是Docker基础教程。对Docker命令不熟悉的读者们建议先学习下Python Web工具篇的Docker及Docker-compose基础命令。
Docker及Docker-Compose的安装
学习本教程前首先我们要在Linux服务器上安装Docker及Docker-Compose。菜鸟教程上总结了Docker在各个平台和系统上的安装,大家可以参考。这里总结了下Docker及Docker-compose在阿里云Ubuntu系统上的安装过程。步骤看似很多且复杂,但大家只需要一步一步copy和paste命令就行了,整个安装过程很流畅。
# 以Ubuntu为例 # Step 1: 移除之前docker版本并更新更新 apt 包索引 sudo apt-get remove docker docker-engine docker.io sudo apt-get update # Step 2: 安装 apt 依赖包,用于通过HTTPS来获取仓库 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common # Step 3: 添加 Docker 的官方 GPG 密钥 curl -fsSL mirrors.aliyun/docker-ce/linux/ubuntu/gpg | sudo apt-key add - # Step 4: 设置docker稳定版仓库,这里使用了阿里云仓库 sudo add-apt-repository "deb [arch=amd64] mirrors.aliyun/docker-ce/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update # Step 5: 安装免费的docker Community版本docker-ce sudo apt-get -y install docker-ce # sudo apt-get install -y docker-ce= #该命令可以选择docker-ce版本 # Step 6: 查看docker版本及运行状态 sudo docker -v sudo systemctl status docker # Step 7:本步非必需。使用阿里云设置Docker镜像加速,注意下面链接请使用阿里云给自己的URL sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json