什么是DockerCompose
docker Compose是Docker编排的项目之一,负责快速的部署分布式应用
是官方的开源项目,负责实现对Docker容器集群的快速编排,从功能上面看,跟openStack之间的heat十分类似
compose的定位是定义和运行多个Docker容器的应用,其前身是开源项目Fig
它允许用户通过一个单独的docker-compose.yml模块文件来定义一组相关联的的应用容器为一个项目,compose里面有两个重要的概念
服务:一个应用的容器,实际上可以包含若干个运行相同实例的容器实例
项目:由一组关连的应用容器组成的一个完整的业务单元,在docker-compose.yml中间定义
compose的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷的生命周期管理
安装和卸载
可以通过python的包管理工具pip进行安装
命令安装
输入以下命令
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
授权
chmod +x docker-compose
docker-compose基本使用
场景
最常见的是web网站,该项目包含web应用和缓存
使用
编写docker-compose.yml文件,这是compose使用的主板文件
docker-compose.yml
version: '3'
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
启动 docker-compose up 没有镜像时候会自动下载
以守护态运行 docker-compose -d
删除 docker-compose down
部署项目到容器
在/urs/local/项目创建文件夹 myblog
tan@ubuntu:/usr/local/docker$ mkdir bolg
vi docker-compose.yml
version: '3'
services:
web:
restart: always
image: tomcat
container_name: web
ports:
- 8080:8080
volumes:
- /usr/local/docker/mybolg/ROOT:/usr/local/tomcat/webapps/ROOT
mysql:
restart: always
image: mysql:5.7.22
container_name: mysql
ports:
- 3306:3306
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: 123
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- mysql-data:/var/lib/mysql
volumes:
mysql-data:
运行
docker-compose up
将文件上传 /usr/local/docker/mybolg/ROOT
unzip解压 进入/usr/local/docker/mybolg/ROOT/WEB-INF/classes 修改数据库配置信息
docker-compose up 再次启动
配置文件语言yaml
YAML是用来专门写配置文件的语言,非常简洁和强大,远比json格式方便
基本语法规格
-大小写敏感
使用缩进表示成级关系
缩进时候不允许使用tab键,只允许使用空格
缩进的空格数目不重要,只要相同层级的元素左侧对齐就可以了
#表示注释、、
支持数据格式有三种,对象,数组,纯量
为什么json不适合做配置文件
缺乏注释
过于严格
低信噪比
长数据串
数字
json替代方案
HJSON
HOCON 为play框架设计的配置格式
YAML