Compose 是一个用于定义和运行多容器 Docker 的工具。借助 Compose,我们可以使用 YAML 文件来配置应用程序的服务。
在我们配置yml的时候,每个容器都需要配置一些必须的内容。其中environment就是容器中比较常用的一个参数,它主要是用来配置容器中程序所需要配置的一些参数。下面就拿zookeeper集群为例来说明。
version: '3.7'
# 配置zk集群的
# container services下的每一个子配置都对应一个zk节点的docker container
services:
zoo1:
# docker container所使用的docker image
image: zookeeper
hostname: zoo1
container_name: zoo1
privileged: true
# 配置docker container和宿主机的端口映射
ports:
- "2181:2181"
- "8081:8080"
# 配置docker container的环境变量
environment:
TZ: Asia/Shanghai
# 当前zk实例的id
ZOO_MY_ID: 1
# 整个zk集群的机器、端口列表
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
#超时时间
ZOO_TICK_TIME: 20000
# 将docker container上的路径挂载到宿主机上 实现宿主机和docker container的数据共享
volumes:
- ./zk1/data:/data
- ./zk1/datalog:/datalog
zoo2:
image: zookeeper
hostname: zoo2
container_name: zoo2
privileged: true
ports:
- "2182:2181"
- "8082:8080"
environment:
TZ: Asia/Shanghai
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
#超时时间
ZOO_TICK_TIME: 20000
volumes:
- ./zk2/data:/data
- ./zk2/datalog:/datalog
zoo3:
image: zookeeper
hostname: zoo3
container_name: zoo3
privileged: true
ports:
- "2183:2181"
- "8083:8080"
environment:
TZ: Asia/Shanghai
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
#超时时间
ZOO_TICK_TIME: 20000
volumes:
- ./zk3/data:/data
- ./zk3/datalog:/datalog
在用docker-compose.yml来配置zookeeper集群的时候,environment其实主要配置的就是zookeeper中的一些参数,最主要的就是 /bin/zoo.cfg文件中的一些内容,但应该怎么把zoo.cfg中的参数和environment中的参数一一对应起来呢,例如zoo.cfg中配置的tickTime在docker-compose.yml应该怎么配置才行呢?这时候我们就要去docker的官网看下,找到Docker Hub在它的库中找到zookeeper的信息。Docker Hub
我们点进去查看一下zookeeper的具体信息,里面会有docker对zookeeper的版本信息,以及对zookeeper的具体介绍和快速使用的代码。其中就包括了参数的设定。
这样我们就找到了tickTime这个变量的设置方法,即zookeeper的zoo.cfg中tickTime要配置时只需要在docker-compose.yml中environment里设置一个变量ZOO_TICK_TIME就可以了。