Apache zookeeper 插入种子数据后,如何将Apache ZooKeeper归档?
我想使用Docker运行ApacheZooKeeper,并插入种子数据(用于测试配置)。我尝试使用如下启动脚本: DockerfileApache zookeeper 插入种子数据后,如何将Apache ZooKeeper归档?,apache-zookeeper,dockerfile,Apache Zookeeper,Dockerfile,我想使用Docker运行ApacheZooKeeper,并插入种子数据(用于测试配置)。我尝试使用如下启动脚本: Dockerfile FROM zookeeper:latest ADD startup.sh . EXPOSE 2181 CMD ["./startup.sh"] startup.sh #!/bin/sh ./bin/zkCli.sh -server localhost:2181 create /foo "" ./bin/zkCli.sh -server localhost:
FROM zookeeper:latest
ADD startup.sh .
EXPOSE 2181
CMD ["./startup.sh"]
startup.sh
#!/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服务器docker化?您可以利用
docker compose
实现此目的
docker compose.yml
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
确保从startup.sh
中删除/bin/zkServer.sh start front
,并在startup.sh
中将localhost
替换为zookeeper
然后只需运行docker compose up
,它将首先启动zookeer
服务,然后使用修改后的命令运行zookeer\u setup
服务。(确保您在zookeerper\u设置
服务中使用startup.sh
正确装载目录)
如果zookeeper
需要更多时间启动,您可以在startup.sh
中添加sleep 5
(或更多)
下次,当您不需要使用startup.sh
再次配置它时,您可以运行docker compose up zookeer
来启动预配置的zookeer
服务。另一种方法(可能更简单)是在后台启动zookeer,创建节点,停止zookeeper,然后在前台模式下运行它
您的startup.sh
可能类似于-
./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