CouchDB サービスの Docker 化

2つの CouchDB コンテナ間で同じデータを共有するため、ここでは例としてデータ・ボリュームを使います。これはホット・アップグレード、同じデータを使った異なった CouchDB バージョンのテストなどに便利です。

1つめのデータベースを作成

/var/lib/couchdb はデータ・ボリュームとして作成しているのを注意してください。

$ COUCH1=$(docker run -d -p 5984 -v /var/lib/couchdb shykes/couchdb:2013-05-03)

1つめのデータベースにデータを追加

Docker ホストは到達可能な localhost を想定しています。もしそうでなければ、 localhost を Docker ホストのパブリック IP アドレスに置き換えてください。

$ HOST=localhost
$ URL="http://$HOST:$(docker port $COUCH1 5984 | grep -o '[1-9][0-9]*$')/_utils/"
$ echo "Navigate to $URL in your browser, and use the couch interface to add data"

2つめのデータベースを作成

今回は $COUCH1 のボリュームに対する共有アクセスをリクエストします。

$ COUCH2=$(docker run -d -p 5984 --volumes-from $COUCH1 shykes/couchdb:2013-05-03)

2つめのデータベースのデータを表示する

$ HOST=localhost
$ URL="http://$HOST:$(docker port $COUCH2 5984 | grep -o '[1-9][0-9]*$')/_utils/"
$ echo "Navigate to $URL in your browser. You should see the same data as in the first database"'!'

おめでとうございます。2つの Couchdb コンテナを実行し、お互いのデータを完全に隔離しました。