macOS High Sierra で CouchDB 2.0.0 が動かないので docker で

# 事の発端
普段 CouchDB 2.0.0 を使ってプログラミングしている。 その環境に嬉々として macOS High Sierra をインストールしたところ、 CouchDB が起動しなくなりました。
CouchDB の github に CouchDB 2.1.0 への [issue #840](https://github.com/apache/couchdb/issues/840) が上がっていて、erlang のバグらしいこと、それの CouchDB がサポートするバージョンのソースを入手し、１行修正の上ビルドし直して適用したらうまくいくかもしれない、との情報があったが、issue を上げた人がまだそれに対して返信していない。この issue のスレッドには、1.6 でも同様の状態になったとコメントしている人もあるので、どうやら 2.0.0 もその憂き目にあった様子。

しかも自分の知識の範疇で erlang をビルドし直した後にどうするかが今ひとつピンとこない。

こりゃ、もう、docker でしょ、ってことで docker 構築です。
最近なんでも docker に頼る自分です。(^^;;;

# Docker Image の確定
入れたいバージョン:  CouchDB 2.0.0

[Docker Hub](https://hub.docker.com) で検索してみると、Official の 2.0.0　が見当たらない。CouchDB の DOCS で、instillation の章に ["Installation via docker"](http://docs.couchdb.org/en/2.1.0/install/docker.html) なる節があって、そこを見ると apache/couchdb に tag 2.0.0 があるらしきことが書いてある。これを頼りに、

```
$ docker pull apache/couchdb:2.0.0
Error response from daemon: manifest for apache/couchdb:2.0.0 not found
```

となった。latest の 2.1.0 なら pull できるが目的のバージョンではなかった。
いくらかGoogle先生で検索を繰り返し、Short Description に "Official Apache CouchDB Docker image"と書かれた [klaemo/couchdb](https://hub.docker.com/r/klaemo/couchdb/)を発見。 ssl を使用する場合の [klaemo/couchdb-ssl](https://hub.docker.com/r/klaemo/couchdb-ssl/) が、github の [apache/couchdb-docker](https://github.com/apache/couchdb-docker)で紹介されている。この docker image は、Docker Hub の[apache/couchdb](https://hub.docker.com/r/apache/couchdb/)で、[詳細説明へのリンク](https://github.com/apache/couchdb-docker)が示されていて、そこからもリンクされていることを確認した。これらのことから [klaemo/couchdb](https://hub.docker.com/r/klaemo/couchdb/) を使うことにした。

# Docker Image の pull & run

[klaemo/couchdb](https://hub.docker.com/r/klaemo/couchdb/) の Full Description などをみて、以下はすんなりいきました。

```:リポジトリーからcouchedをpullする
$ docker pull klaemo/couchdb:2.0.0
2.0.0: Pulling from klaemo/couchdb
aa18ad1a0d33: Pull complete
c9c9bce49bac: Pull complete
2cf341bb1e0c: Pull complete
36d2f0a8e0e1: Pull complete
84d05e7ec0a8: Pull complete
70dedd8d9fd5: Pull complete
bb56d024fe18: Pull complete
4dfb5272a814: Pull complete
82c46c798747: Pull complete
cf16d4df85d7: Pull complete
Digest: sha256:7ddcf7c3c2ff7c0725d081840c914ebf6cb4cdf0730d67d15abcc64a0f9c195d
Status: Downloaded newer image for klaemo/couchdb:2.0.0
```

で、うまくいったようなので実行。

```
$ docker run --name mycouchdb -p 5984:5984 -d -v $(pwd):/opt/couchdb/data -e COUCHDB_USER=xxx -e COUCHDB_PASSWORD=xxx klaemo/couchdb:2.0.0
d225a0e625b0173ac0bd7455f3ba111916a4c4e76170e45b400ed97a1621f035
```

ということでうまくいきました。

# ちょっと強引(?)なチャレンジ
Mac にインストールしてあった couchbakcup の couchrestore を使って、たまたまとってあったバックアップをリストアすると、うまく利用していた状態が復元されました。

```
$ cat backup.json | couchrestore --db mydb
================================================================================
Performing restore on http://localhost:5984/mydb using configuration:
{
  "bufferSize": 500,
  "parallelism": 5
}
================================================================================
  couchbackup:restore restored 82 +0ms
  couchbackup:restore finished { total: 82 } +20ms
```

アプリを起動して、無事動作確認終了。

Mac の CouchDB 2.0.0 は次の場所にデータを作っているらしいので、そこをコピーして docker run するときにそのコピー先のディレクトリを指定してみたが、うまくデータをロードできないというエラーが Fauxton の画面に表示されてデータは参照できなかった。ちょっと強引だった模様。

```
~/Library/Application\ Support/CouchDB2/var/lib/couchdb/
```

# 追記 (2017-10-02 09:24 JST)

[Issue #840](https://github.com/apache/couchdb/issues/840) にfix版の 2.1.0 のアーカイブファイルへのリンクが公開されました。Issue を登録した人がクイックにテストして問題がなかったようで、[Issue #840](https://github.com/apache/couchdb/issues/840) はクローズされたようです。ローカルに一応ダウンロードしておくことにしました。