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。

项目流程示意图

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

MySQL 容器:数据库服务

Redis 容器:缓存服务

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

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

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

django项目目录

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

docker-compose.yml核心编排文件

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)镜像和容器配置文件

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

Nginx镜像和容器配置文件

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

Db (MySQL)容器配置文件

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

redis容器配置文件

 启动redis容器直接使用官方镜像即可 增加redis配置文件,大部分情况下采用默认配置

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

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

docker-compose build

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

docker-compose up -d

#启动uwsgi服务器

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

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

网站上线

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值