概要
容器编排,他是一个容器快速编排的技术
docker-compose.yml
- 项目 包含多个服务
- 在每个服务里可以定义容器运行的参数 配置文件等等
- 一个容器可以设置开启多个实例
安装
使用二进制的文件安装
curl -L https://github.com/docker/compose/releases/download/1.23.0-rc2/run.sh > /usr/local/bin/docker-compose
# 授权可执行文件
chmod +x /usr/local/bin/docker-compose
使用pip安装
pip install docker-compose
检测安装是否成功
docker-compose version
yml语法 (压妹儿语法)
YAML 一个中非标记语言,相比传统的配置文件更加简洁,可读行更强
xml
properties
json
yml
基础语法
key:[空格]value
- 可以是基本类型
- 对象类型 map
- 数组
username: 小王
age: 18
docker-compose 基础指令
version
指定docker-compose的版本
栗子
version: "3"
# version: "3.7"
services
声明一组服务
image
指定基础镜像
栗子
# 声明docker-compose的版本
version: 3
# 声明一组服务
services:
# 服务的名称
nginx:
# 从远程仓库下载现成的镜像
image: nginx
build
从dockerfile中构建镜像
栗子
# 声明docker-compose的版本
version: 3
# 声明一组服务
services:
app:
# 通过dockerfile构建镜像
build: ./docker/
子属性
- context 指定dockerfile的路径
- dockerfile 指定的dockerfile的名字
说明
如果是dockerfile文件命令是dockerfile可以省略不写
ports
映射一组端口 值的类型是一个数组
栗子
# 声明docker-compose的版本
version: 3
# 声明一组服务
services:
build: ./docker/
ports:
# 映射一组端口端口
- "8080:8080"
- "9000:9000"
volumes
将容器中目录映射到宿主机的目录(保存数据)
- 可以映射文件
- 映射目录(防止目录的里原有的文件被覆盖的现象)
# 声明docker-compose的版本
version: 3
# 声明一组服务
services:
mysql:
# mysql的数据 保存在宿主机
image: mysql
volumes:
- ./data/:/var/lib/mysql
- ./logs/:/var/log/mysql
COMMAND
设置容器运行的参数
语法格式
command:
# 防止低版本的连接客服报错的问题
--default-authentication-plugin=mysql_native_password
# 设置数据库的编码
--character-set-server=utf8mb4
# 设置数据库默认的排序方式
--collation-server=utf8mb4_general_ci
# 解决低版本不允许时间字段 not null
--explicit_defaults_for_timestamp=true
# Linux 表名区分大小写 1 表示不区分大小写
--lower_case_table_names=1
environment
设置某些特定的容器的环境变量
栗子
environment:
# 第一个连接数据URL的时候指定时区
# 第二个 创建数据库的指定时区
TZ: Asia/Shanghai
# 注意 在开发中不要使用root用户去连接数据库 安全考虑
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: hello
MYSQL_PASSWORD: world
运行docker-compose文件
docker-compose up -d
完整的代码
# 声明docker-compose的版本
version: "3"
# 声明一组服务
services:
#
nginx:
# 从远程仓库下载现成的镜像
image: nginx
# 容器 自定义镜像
app:
# 通过dockerfile构建镜像
build: ./app/
# 等价于
# context: ./app/
# dockerfile: Dockerfile
ports:
# run -p 映射端口
- "8080:8080"
- "9000:9000"
mysql:
# mysql 数据 保存在宿主机
# 数据卷 -v
image: mysql
volumes:
- ./data/:/var/lib/mysql
- ./logs/:/var/log/mysql
command:
# 防止低版本的连接客服报错的问题
--default-authentication-plugin=mysql_native_password
# 设置数据库的编码
--character-set-server=utf8mb4
# 设置数据库默认的排序方式
--collation-server=utf8mb4_general_ci
# 解决低版本不允许时间字段 not null
--explicit_defaults_for_timestamp=true
# Linux 表名区分大小写 1 表示不区分大小写
--lower_case_table_names=1
environment:
# 第一个连接数据URL的时候指定时区
# 第二个 创建数据库的指定时区
TZ: Asia/Shanghai
# 注意 在开发中不要使用root用户去连接数据库 安全考虑
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: hello
MYSQL_PASSWORD: world
网友评论