運用技術者がインフラ構築に時間をかけずCoreOS+docker-composeでミドルウェア環境を作る(Rocket.chat編)

はじめに

前回に引き続きミドルウェアを次々に導入していきます。今回はRocket.chatです。見た目がSlackに似ているので使いやすいです。社内改善の活用例としては、チーム内や社内のメールをチャットにすることで、メールの量を減らすことができます。また、誤って社内の連絡を社外に飛ばすリスクも減らすことができます。


参考サイト

Docker-composeは、パラメータファイル( docker-compose.yml )を作れば、ミドルウェアのダウンロードから簡単な初期設定までを実施してくれる優れものです。サービスの起動/停止もコマンド一つです。とても素晴らしいです。

以下のサイトに主要なミドルウェアのパラメータファイルがあるので、必要に応じて一部アレンジしながら使ってみたいと思います。


手順

zabbix同様、作業ディレクトリを作り、設定ファイルを入れて、
Docker-composeのコマンドを叩くだけです。簡単ですね。

#作業用ディレクトリの作成と移動
mkdir rocketchat
cd rocketchat

#テキストエディタを起動し、次の内容を貼り付ける
vim docker-compose.yml

docker-compose.yml の中身は以下の通りです。

version: '2'
services:
rocketchat:
image: rocketchat/rocket.chat:latest
restart: unless-stopped
volumes:
- ./uploads:/app/uploads
environment:
- PORT=3005
- ROOT_URL=http://localhost:3005
- MONGO_URL=mongodb://mongo:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
- MAIL_URL=smtp://smtp.email
- HTTP_PROXY=http://proxy.domain.com
- HTTPS_PROXY=http://proxy.domain.com
depends_on: - mongo ports: - 3005:3005 labels: - "traefik.backend=rocketchat" - "traefik.frontend.rule=Host: your.domain.tld"
mongo:
image: mongo:3.2
restart: unless-stopped
volumes:
- ./data/db:/data/db
#- ./data/dump:/dump
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
labels:
- "traefik.enable=false"
# this container's job is just run the command to initialize the replica set.
# it will run the command and remove himself (it will not stay running)
mongo-init-replica:
image: mongo:3.2
command: 'mongo mongo/rocketchat --eval "rs.initiate({ _id: ''rs0'', members: [ { _id: 0, host: ''localhost:27017'' } ]})"'
depends_on:
- mongo
# hubot, the popular chatbot (add the bot user first and change the password before starting this image)
hubot:
image: rocketchat/hubot-rocketchat:latest
restart: unless-stopped
environment:
- ROCKETCHAT_URL=rocketchat:3000
- ROCKETCHAT_ROOM=GENERAL
- ROCKETCHAT_USER=bot
- ROCKETCHAT_PASSWORD=botpassword
- BOT_NAME=bot
# you can add more scripts as you'd like here, they need to be installable by npm
- EXTERNAL_SCRIPTS=hubot-help,hubot-seen,hubot-links,hubot-diagnostics
depends_on:
- rocketchat
labels:
- "traefik.enable=false"
volumes:
- ./scripts:/home/hubot/scripts
# this is used to expose the hubot port for notifications on the host on port 3001, e.g. for hubot-jenkins-notifier
ports:
- 3001:8080
#traefik:
# image: traefik:latest
# restart: unless-stopped
# command: traefik --docker --acme=true --acme.domains='your.domain.tld' --acme.email='your@email.tld' --acme.entrypoint=https --acme.storagefile=acme.json --defaultentrypoints=http --defaultentrypoints=https --entryPoints='Name:http Address::80 Redirect.EntryPoint:https' --entryPoints='Name:https Address::443 TLS.Certificates:'
# ports:
# - 80:80
# - 443:443
# volumes:
# - /var/run/docker.sock:/var/run/docker.sock
# 起動
sudo docker-compose -p roketchat up -d

#停止する場合
sudo docker-compose -p roketchat down

#【注意】
# 実行/停止するときは、停止するミドルウェアのymlファイルのあるディレクトリで実施してください。
# 他のところで実施するとコマンドが失敗するか、別のミドルウェアのymlがある場合、それが止まってしまいます。

動作確認

ブラウザから「http://<coreosのIP>:3005」へアクセスします。
以下の画面が出れば、成功です。

おわりに

社内限定で使用するチャットツールであれば、改善提案で出すのが一番楽かなと思います。夜間オペレータなどの交代勤務などの場合も、過去のやり取りを追いかけるのが楽だったりすると思います。




コメント

%d人のブロガーが「いいね」をつけました。
タイトルとURLをコピーしました