如何在插入种子数据的情况下对 Apache ZooKeeper 进行 docker 化?
How can I dockerize Apache ZooKeeper with seed data inserted?
我想 运行 Apache Zookeeper 使用 Docker,插入种子数据(用于测试配置)。我尝试使用如下启动脚本:
Docker文件
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
但这没有用,因为我试图在服务器启动和 运行ning 之前插入数据。
如何在启动时对具有种子数据的 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
Make sure you remove ./bin/zkServer.sh start-foreground
from startup.sh
and replace localhost
with zookeeper
in startup.sh
.
然后只是 运行 docker-compose up
所以它将首先启动 zookeeper
服务然后它会 运行 zookeeper_setup
服务修改命令。 (确保在 zookeerper_setup
服务中使用 startup.sh
正确挂载目录)
如果zookeeper
需要更多时间启动,您可以在startup.sh
中添加sleep 5
(或更多)。
下次,当您不需要再次使用 startup.sh
配置时,您可以 运行 docker-compose up zookeeper
启动预配置的 zookeeper
服务。
另一种(可能更简单)方法是在后台启动 zookeeper,创建节点,停止 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
我想 运行 Apache Zookeeper 使用 Docker,插入种子数据(用于测试配置)。我尝试使用如下启动脚本:
Docker文件
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
但这没有用,因为我试图在服务器启动和 运行ning 之前插入数据。
如何在启动时对具有种子数据的 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
Make sure you remove
./bin/zkServer.sh start-foreground
fromstartup.sh
and replacelocalhost
withzookeeper
instartup.sh
.
然后只是 运行 docker-compose up
所以它将首先启动 zookeeper
服务然后它会 运行 zookeeper_setup
服务修改命令。 (确保在 zookeerper_setup
服务中使用 startup.sh
正确挂载目录)
如果zookeeper
需要更多时间启动,您可以在startup.sh
中添加sleep 5
(或更多)。
下次,当您不需要再次使用 startup.sh
配置时,您可以 运行 docker-compose up zookeeper
启动预配置的 zookeeper
服务。
另一种(可能更简单)方法是在后台启动 zookeeper,创建节点,停止 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