検討経緯
1.会社のコラボレーションツールが使えなくなる。
まぁ、正しくは使えるんだが、使用者が制限されまして、コラボレーションツールとしての意味合いが減ってきているので別のツールを検討。
全社的な利用ではなく、あくまでチーム単位で使える程度の規模で。
2.Docker触ってみたい。
そろそろ真面目に利用を考えてみてもいいのかなと。
ということから開発環境にDockerを導入し、その上でコラボレーションツールを起動して運用してみようと画策。
色々見ていたらオンプレで利用出来るLet's Chatが良いっぽい。
これを機にメール主体のコミュニケーションからも脱却したいし。
導入
導入自体は至極簡単。
Docker導入からLet's Chat導入までを一気に
あ、環境はCentOS7です。
# docker導入/起動
yum update
cat <<EOF > /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
yum -y install docker
systemctl start docker
# docker compose導入
curl -L https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
# Let's chat導入
docker pull mongo
導入はここまで。
あとは設定して起動するだけ。
まずはDocker Composeの準備。
複数コンテナを纏めて起動したり停止してくれるので、楽ですね。
# docker-compose.yml準備
mkdir -p ~/letschat
cd ~/letschat
cat <<EOF > ./docker-compose.yml
app:
image: sdelements/lets-chat
links:
- mongo
ports:
- 8080:8080
- 5222:5222
mongo:
image: mongo:latest
EOF
# コンテナ起動
docker-compose up
最後にアクセスして確認。
http://host-ip:8080/
デフォルトだとファイルアップロードやプライベートチャットルームの機能がオフになっているので、変更したい人はコンテナ上の/usr/src/app/config配下にsettings.ymlを配置する。
サンプルは/usr/src/app/settings.yml.sampleというものがあるので、それを流用。
/usr/src/app/configはすでにマウントされているので、docker inspectでホスト上のディレクトリを確認し、そこに配置。
一通り確認してみたら
最初のうちは普通に使えていたので、満足だったが、メッセージが増えてきた中、あるチャットルームで、ログオフ⇨オグインを実施したところ、ハング。
どうやら1ルームあたり100メッセージを超えるとハングするっぽい。
尚、Let's Chat上のルーム全体で100メッセージ超えた時点ではハングはしない。
例えば50メッセージのチャットルームが4部屋あっても問題なく使えた。
あと、1メッセージあたりのサイズも影響しないようだ。
AP層をローカルのCentOS上にgit cloneし、コンテナ上のMongoDBに接続した場合、
この事象は発生していない。
ログに出力されているLet's chatのバージョン見る限りはDocker上のものと同じなんだけど。。。Dockerの問題?調べても同様の事象が起こっているのが見つけられなかった。
2016/02/29 追記
101件目をPostした後、ログアウトするとMongoDBとのコネクションが10本中5本切れているようにみえる。