@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

wekanをDockerで動かしたいけどMongoDBはホストマシンを使う

Dockerが動いてるホストマシンになぜかMongoDBが動いているので、wekanのDBをホストマシンに向けて動かした。

wekanは旧Libraboardで、Trelloのクローン。"カンバン"のウェブサービス

Trello

trello.com

https://d2k1ftgv7pobq7.cloudfront.net/meta/p/res/images/75ebf41369335954bd02e8d5f062e340/home-hero_fr.png

wekan

Wekan — open-source kanban

https://wekan.io/static/screenshot.jpeg

経緯

ドキュメントにしたがって、docker-composeでWekanを動かしていたが、MongoDBを2つ動かすのは無駄が多いと思ったのでまとめたかった。

github.com

状況

Wekanを立ち上げてもMongoDBへの接続に失敗する。

docker-compose.ymlの内容

wekan:
  image: mquandalle/wekan
  environment:
    - MONGO_URL=mongodb://192.168.123.456:27017/wekan
    - ROOT_URL=http://192.168.123.456:8081
  ports:
    - 8081:80
  privileged: true

立ち上げた時の雰囲気(うろ覚え)

$ docker-compose up -d
...
$ docker logs -f wekan_wekan_1
...
 192.168.123.456:27017 ... Connection refused ...

mongoコンテナからの接続も失敗する。

$ docker run -it mongo bash
hogehoge/# mongo --host 192.168.123.456
... Connection refused

解決方法

Wekanの設定ばっかり疑ってたけど、結局はMongoDBの設定ができてなかった。

MongoDBの接続元のIP制限を外したら接続できて無事動いた。

$ less /etc/mongod.conf
...
# network interfaces
net:
  port: 27017
  # bindIp: 127.0.0.1  # Listen to local interface only, comment to listen on all interfaces.
...

/etc/mongod.confnet:bindIpコメントアウトしてmongodbを再起動して、再度wekanを起動した。

$ sudo systemctl restart mongod
$ docker-compose up -d