Bootstrap

docker-compose.yml中environment的参数详情(以zookeeper集群为例)

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就可以了。

;