首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用插入的种子数据对Apache ZooKeeper进行坞化?

如何使用插入的种子数据对Apache ZooKeeper进行坞化?
EN

Stack Overflow用户
提问于 2017-01-02 09:17:06
回答 2查看 569关注 0票数 4

我希望使用Docker运行,并插入种子数据(用于测试配置)。我尝试使用启动脚本,如下所示:

Dockerfile

代码语言:javascript
运行
复制
FROM zookeeper:latest

ADD startup.sh .
EXPOSE 2181
CMD ["./startup.sh"]

startup.sh

代码语言:javascript
运行
复制
#!/bin/sh

./bin/zkCli.sh -server localhost:2181 create /foo ""
./bin/zkCli.sh -server localhost:2181 create /foo/bar ""

./bin/zkServer.sh start-foreground

但是这不起作用,因为我试图在服务器启动和运行之前插入数据。

如何在启动时对具有种子数据的ZooKeeper服务器进行对接?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-02 10:11:56

为此,您可以利用docker-compose

docker-compose.yml

代码语言:javascript
运行
复制
version: '2'

services:
   zookeeper:
     image: zookeeper:latest
     restart: always
     ports:
       - "2181:2181"
   zookeeper_setup:
     image: zookeeper:latest
     depends_on:
       - zookeeper
     links:
       - zookeeper
     command: sh /setup/startup.sh
     volumes:
       - ./:/setup

确保将./bin/zkServer.sh start-foregroundstartup.sh中删除,并将localhost替换为startup.sh中的zookeeper

然后运行docker-compose up,这样它将首先启动zookeeper服务,然后使用修改后的命令运行zookeeper_setup服务。(确保在startup.sh服务中使用zookeerper_setup正确地挂载目录)

如果zookeeper需要更多的时间来启动,您可以在startup.sh中添加sleep 5 (或更多)。

下一次,当您不需要使用startup.sh再次配置它时,您可以运行docker-compose up zookeeper来启动预先配置的zookeeper服务。

票数 3
EN

Stack Overflow用户

发布于 2018-09-20 09:13:33

另一种(可能更简单)方法是在后台启动动物园管理员,创建节点,停止动物园管理员,然后在前台模式下运行它。

你的startup.sh可能是-

代码语言:javascript
运行
复制
./bin/zkServer.sh start
./bin/zkCli.sh -server localhost:2181 create /foo ""
./bin/zkServer.sh stop
echo "Starting Zookeeper in foreground mode..."
./bin/zkServer.sh start-foreground
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41424007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档