【发布时间】:2020-10-15 15:49:37
【问题描述】:
我正在尝试创建一个 docker-compose 文件来运行 zookeeper 和 solr(3 节点集群 - 官方图像)。我正在尝试使用撰写文件中的“command”属性在zookeeper中定义一个znode。
command: bash -c "/apache-zookeeper-3.5.8-bin/bin/zkCli.sh -server zoo1:2181 create /solr '' && zkServer.sh start-foreground"
执行此命令的 zookeeper 节点不断崩溃。
我的 docker compose 文件是:
version: '3.7'
services:
zoo1:
image: zookeeper:3.5
container_name: zoo1
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_4LW_COMMANDS_WHITELIST: mntr,conf,ruok
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
- solr
volumes:
- 'zoo1_data:/data'
zoo2:
image: zookeeper:3.5
container_name: zoo2
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_4LW_COMMANDS_WHITELIST: mntr,conf,ruok
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
networks:
- solr
volumes:
- 'zoo2_data:/data'
zoo3:
image: zookeeper:3.5
container_name: zoo3
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
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_4LW_COMMANDS_WHITELIST: mntr,conf,ruok
command: bash -c "/apache-zookeeper-3.5.8-bin/bin/zkCli.sh -server zoo2:2181 create /solr '' && zkServer.sh start-foreground"
networks:
- solr
volumes:
- 'zoo3_data:/data'
depends_on:
- zoo1
- zoo2
solr1:
image: solr:8.3
container_name: solr1
ports:
- "8981:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181/solr
volumes:
- 'solr1varsolr:/var/solr'
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
solr2:
image: solr:8.3
container_name: solr2
ports:
- "8982:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181/solr
volumes:
- 'solr2varsolr:/var/solr'
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
solr3:
image: solr:8.3
container_name: solr3
ports:
- "8983:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181/solr
volumes:
- 'solr3varsolr:/var/solr'
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
networks:
solr:
volumes:
zoo1_data:
zoo2_data:
zoo3_data:
solr1varsolr:
solr2varsolr:
solr3varsolr:
在我看来,负责在容器中启动 zookeeper 的命令的第二部分没有被执行,但我不知道为什么?还有其他方法可以实现吗?
已解决
找到原因了。命令选项中“zkServer.sh start-foreground”之前缺少“exec”。导致执行命令后容器被关闭。 感谢@Yoeri Van Nieuwerburg 提供用于比较的示例撰写文件。
工作撰写文件:
version: '3.7'
services:
zoo1:
image: zookeeper:3.5
container_name: zoo1
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_4LW_COMMANDS_WHITELIST: mntr,conf,ruok
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
- solr
volumes:
- 'zoo1_data:/data'
zoo2:
image: zookeeper:3.5
container_name: zoo2
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_4LW_COMMANDS_WHITELIST: mntr,conf,ruok
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
networks:
- solr
volumes:
- 'zoo2_data:/data'
zoo3:
image: zookeeper:3.5
container_name: zoo3
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
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_4LW_COMMANDS_WHITELIST: mntr,conf,ruok
command: bash -c "/apache-zookeeper-3.5.8-bin/bin/zkCli.sh -server zoo2:2181 create /solr '' && exec zkServer.sh start-foreground"
networks:
- solr
volumes:
- 'zoo3_data:/data'
depends_on:
- zoo1
- zoo2
solr1:
image: solr:8.3
container_name: solr1
ports:
- "8981:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181/solr
volumes:
- 'solr1varsolr:/var/solr'
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
solr2:
image: solr:8.3
container_name: solr2
ports:
- "8982:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181/solr
volumes:
- 'solr2varsolr:/var/solr'
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
solr3:
image: solr:8.3
container_name: solr3
ports:
- "8983:8983"
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181/solr
volumes:
- 'solr3varsolr:/var/solr'
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
networks:
solr:
volumes:
zoo1_data:
zoo2_data:
zoo3_data:
solr1varsolr:
solr2varsolr:
solr3varsolr:
【问题讨论】:
标签: docker solr docker-compose apache-zookeeper