docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis

docker-compose简介

Docker-compose是一种定义容器集群编排和部署的工具,使用docker-compose后不再需要使用 shell 脚本来逐一创建和启动容器,可以通过 docker-compose.yml 文件构建和管理复杂多容器组合。

Compose使用三步骤:

使用 Dockerfile 定义应用程序的环境

使用 docker-compose.yml 定义构成应用程序的服务,使它们可以在隔离环境中一起运行

执行 docker-compose up 命令启动并运行整个应用程序。

安装:

linux:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple docker-compose==1.24.1

Windows : Docker Toolbox已经包括 Compose 和其他 Docker 应用程序,不需要单独安装 Compose。

项目流程示意图

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第1张图片

Django + Uwsgi容器:核心应用程序,处理动态请求

MySQL 容器:数据库服务

Redis 容器:缓存服务

Nginx容器:反向代理服务并处理静态资源请求

这四个容器的依赖关系是:Django+Uwsgi 容器依赖 Redis 容器和 MySQL 容器,Nginx 容器依赖Django+Uwsgi容器。

为了方便容器间的相互访问和通信,我们使用docker-compose时可以给每个容器取个别名,这样访问容器时就可以直接使用别名访问,而不使用Docker临时给容器分配的IP了。

django项目目录

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第2张图片

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第3张图片

compose文件夹与django项目的根目录myproject同级。这样做的好处是不同的django项目可以共享compose文件夹。

docker-compose.yml核心编排文件

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第4张图片

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第5张图片

version:"3"  表示这是Compose文件格式的第3版,即最新的版本 。

该compose.yml文件共编排了4项容器服务,别名分别为redis, db, nginx和web

mysql容器执行初始化sql脚本的方式:

将初始化sql脚本挂载到容器的docker-entrypoint-initdb.d目录下,当Mysql容器首次启动时,会在docker-entrypoint-initdb.d目录下扫描 .sh,.sql,.sql.gz类型的文件,如果这些类型的文件存在,将执行它们来初始化一个数据库。

Web (Django+Uwsgi)镜像和容器配置文件

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第6张图片

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第7张图片

dockefile、pip.conf,start.sh,uwsgi.ini与双容器Django+Uwsgi一致,仅需更新项目名称即可。

Nginx镜像和容器配置文件

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第8张图片

配置文件中的项目容器ip改为别名 其他的配置同双容器部署。

Db (MySQL)容器配置文件

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第9张图片

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第10张图片

启动MySQL容器直接使用官方镜像 增加MySQL配置文件 设置MySQL服务启动时需要执行的脚本命令

redis容器配置文件

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第11张图片 启动redis容器直接使用官方镜像即可 增加redis配置文件,大部分情况下采用默认配置

 构建镜像并启动容器组服务

# 进入docker-compose.yml所在文件夹,构建镜像

docker-compose build

docker系列6:Docker-compose部署 Django + Uwsgi + Nginx + MySQL + Redis_第12张图片

# 启动容器组服务,后台运行

docker-compose up -d

#启动uwsgi服务器

docker exec -it myproject_docker_web_1 /bin/bash start.sh

#输入http://http://172.18.86.64/blog/index/ 

网站上线

你可能感兴趣的:(Docker,docker)