2017-01-02 2 views
3

Dockerを使ってApache Zookeeperを実行し、シードデータを挿入したい(設定をテストするため)。私は以下のように起動スクリプトを使用してみました:シードデータを挿入してApache ZooKeeperをどのようにしてドッキングできますか?

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:2181 create /foo/bar "" 

./bin/zkServer.sh start-foreground 

をしかし、私は、サーバーの起動および実行する前にデータを挿入しようとしたので、これは、動作しませんでした。

スタートアップ時にシードデータを持つZooKeeperサーバーをどのようにドッキングできますか?

答えて

1

これには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-foregroundを削除し、startup.shzookeeperlocalhostを置き換えることを確認してください。

それからちょうど実行docker-compose upので、最初zookeeperサービスを開始し、それが修正されたコマンドとzookeeper_setupサービスを実行します。 zookeeperがブートアップするために多くの時間を必要とする場合は、あなたがstartup.shsleep 5(またはそれ以上)を追加することができます

(あなたがstartup.sh適切にサービスzookeerper_setup内でディレクトリをマウントすることを確認してください)。

次回、startup.shで再度設定する必要がない場合は、docker-compose up zookeeperを実行して事前設定済みのzookeeperサービスを開始できます。

関連する問題