メンターを任されたエンジニアのブログ

ある日メンターを任された3流エンジニアのブログ

環境構築:GitLab+Rocket.Chat+Taiga on Docker ー RocketChat編

登場人物

  • GitLab : バージョン管理
  • Rocket.Chat : Webチャット
  • Taiga : プロジェクト管理

こんな感じでやりたいと思います。
Taigaは入れた事ないけど、、、ま、なんとかなるさ。

DockerとDocker Composeを入れる

私がごちゃごちゃ言うより、公式を見た方が早い。
kernelのバージョン(現時点では3.10以上)に注意してくださいね。

Docker requires a 64-bit installation regardless of your Ubuntu version.
Additionally, your kernel must be 3.10 at minimum. The latest 3.10 minor version or a newer maintained version are also acceptable.

docs.docker.com

docs.docker.com

Rocket.Chatを入れる

1.docker-compose.ymlを書く

# vi docker-compose.yml 

app:
  image: rocket.chat
  environment:
    - MONGO_URL=mongodb://mongodb:27017/rocketchat
    - ROOT_URL=http://$HOSTNAME:3000
  links:
    - mongodb
  ports:
    - 3000:3000

mongodb:
  image: mongo:3.0
  volumes:
    - ./mongodb:/data/db
  command: mongod --smallfiles

$HOSTNAMEには自分の環境に合わせたものを入れてくださいませ。

2.mongodb用のディレクトリを作成

Dockerコンテナは削除するとデータまで削除されてしまいます。
そこが良いとこでもあるのですが。

前手順で書いたYMLファイルをよく読んで見ると、
恒久化するためにmongodbコンテナの一部ディレクトリを外に出しています。

  volumes:
    - ./mongodb:/data/db

./mongodbがホスト側、:の右がコンテナ内のディレクト

で、今、mongodbディレクトリが無いので、作成。

# mkdir mongodb

3.起動してみよう

docker-compose up -dでも起動できる。
だけど、mongodbがコネクションを待ち受ける前にRocket.Chatが起動し、接続先がなくて起動失敗する。
コンテナの再起動してもダメ。

なので、最初にDBだけ立ち上げる

# docker-compose up -d mongodb
#  # logs確認
# docker-compose logs mongodb
--- 略
mongodb_1  | 2016-06-12T12:36:33.227+0000 I NETWORK  [initandlisten] waiting for connections on port 27017

### ↑みたいなログが出ていることを確認

# docker-compose up -d app

あ。
そう、私の場合、コンテナ同士の連携がうまくいかなかった。

原因はこいつ

# sysctl -a | grep -i brid
net.bridge.bridge-nf-call-arptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

bridgeにarpテーブルやらipテーブルを適用する云々という設定だそうな。
むかつくので、無効にしてやりました。

# sysctl -w net.bridge.bridge-nf-call-arptables=0
# sysctl -w net.bridge.bridge-nf-call-iptables=0
# sysctl -w net.bridge.bridge-nf-call-ip6tables=0
# sysctl -a | grep -i brid
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
# docker-compose stop app
# docker-compose rm app
   [Y] 
# docker-compose up -d app

4.アクセスしてみる

localhost:3000 とか。

f:id:hatman62:20160615003429p:plain

私の環境だと新規アカウント作成のリンクが消えていますけど、実際はちゃんとあります。
そこでアカウントを登録してください。
最初のユーザがAdmin権限を持つので、注意ですよ

5.LDAP連携と新規登録ユーザ拒否設定

管理 > LDAP から設定できます。
自分の設定をさらす。

検索窓の「変数 シェル」が恥ずかしい

f:id:hatman62:20160615004514p:plain

f:id:hatman62:20160615004520p:plain

f:id:hatman62:20160615004524p:plain

f:id:hatman62:20160615004528p:plain

f:id:hatman62:20160615004532p:plain

f:id:hatman62:20160615004537p:plain

f:id:hatman62:20160615004539p:plain

こんな感じでOpenLDAPと連携しています。
LDAPサーバ構築の記事と見比べてみると、ふむふむと思えるはず。。。

次に新規ユーザをブロックします

管理 > アカウント から設定できます。

f:id:hatman62:20160615005004p:plain

「新しいユーザを手動で承認する」にチェックをつけると、管理者が承認しない限りログインできません。
LDAP連携しているなら、「いいえ」で良いと思います。

f:id:hatman62:20160615005009p:plain

「登録フォームへのアクセス」を無効に設定すると、新規ユーザの登録画面が出ません。

今日はここまで。