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/
网站上线