我想使用 Docker 运行 Apache Zookeeper,并插入种子数据(用于测试配置)。我尝试使用如下启动脚本:
文件
FROM zookeeper:latest
ADD startup.sh .
EXPOSE 2181
CMD ["./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 服务器进行 dockerize?
最佳答案
您可以为此利用 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
然后只需运行
docker-compose up
以便它首先启动 zookeeper
服务,然后它将使用修改后的命令运行 zookeeper_setup
服务。 (确保在 startup.sh
服务中正确挂载带有 zookeerper_setup
的目录)如果
zookeeper
需要更多时间来启动,您可以在 sleep 5
中添加 startup.sh
(或更多)。下次不需要再次配置
startup.sh
时,可以运行 docker-compose up zookeeper
来启动预先配置好的 zookeeper
服务。关于apache-zookeeper - 如何在插入种子数据的情况下对 Apache ZooKeeper 进行 dockerize?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41424007/