我想使用 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/

10-16 16:30