オフラインでもChatOpsしたい!Dockerで解決しよう!

経緯

ざっくり言うと、ChatOpsしたい!けどネットワークに制約がある!なのでDockerで必要なものを用意してイメージを持ち込もう!という経緯です。

入れるもの

Restyaboard

Trelloのクローンです。
プロジェクト管理でRedmineを使ってましたが、カンバンを使いたく、かといってRedmineのカンバンがあるけどもRedmineは個人的に今後の展望wktkしなかったので流行ってるTrello!・・・を使えないからそのクローンのRestyaboardを使ってみようという経緯です。

Rocket Chat

Slackのクローンです。
最初はLet's Chatを使ってました。
すごくシンプルで、かつオシャンティなので浸透も早かったです。ただ問題点が、アバター画像がgravatarで外部接続が必要で、こちらの記事を参考に手を加える必要がありました。アップデートする度に手を加えるのも辛いし、もっといいのないかと探してたら見つけたのがRocket Chatです。

高機能なのですが、浸透するのに逆に足かせになりそうだなと思いつつ、WebRTCでのビデオ通話ができるという点が大きくメリットで切り替えるようにしました。

Hubot

Gitlabなどと連携させるためにBOTとしてHubotもいれます。

Jenkins2

Jenkinsがメジャーバージョンアップしました!(パチパチー!)
よく使われるプラグインがデフォルトで同梱されるようになったらしいので、せっかくだし2でいこう!という経緯です。

その他

コード解析用にSonarQubeと、ナレッジベース用にLodgeかなにか・・・を入れようと思ってます。

Docker Compose

Docker Composeで入れることができます。

OSSがオフィシャルで公開しているものを組み合わせて1つのComposeファイルにします。

docker-compose.ymlファイル

data:
  image: busybox
  volumes:
    - /usr/share/elasticsearch/data
    - /var/lib/postgresql/data
    - /usr/share/nginx/html/media
    - /srv/docker/jenkins/jenkins:/var/jenkins_home
    - /srv/docker/mongodb:/var/lib/mongodb
  command: tail -f /dev/null
  restart: always

# ElasticSearch
elasticsearch:
  image: elasticsearch
  volumes_from:
    - data
  restart: always

# PostgreSQL
postgres:
  image: postgres
  environment:
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: something
  ports:
    - "5432:5432"
  volumes_from:
    - data
  restart: always

# RestyaBoard
restyaboard:
  build: .
  links:
    - elasticsearch:elasticsearch
    - postgres:postgres
  volumes_from:
    - data
  ports:
    - "1234:80"
  restart: always

# Rocket Chat
rocketchat:
  image: rocketchat/rocket.chat
  environment:
    - MONGO_URL=mongodb://mongodb/rocketchat
    - ROOT_URL=http://localhost:80
  ports:
    - "1235:3000"
  links:
    - mongodb

# MongoDB
mongodb:
  image: mongo
  ports:
     - 27017
  volumes_from:
    - data

# Hubot
hubot:
  image: rocketchat/hubot-rocketchat
  links:
    - rocketchat:rocketchat
  environment:
   -  ROCKETCHAT_URL=rocketchat:3000
   -  ROCKETCHAT_ROOM=GENERAL
   -  ROCKETCHAT_USER=bot
   -  ROCKETCHAT_PASSWORD=bot
   -  BOT_NAME=bot
   -  EXTERNAL_SCRIPTS=hubot-pugme,hubot-help

# Jenkins
jenkins:
  restart: always
  image: jenkins:latest
  environment:
    - JENKINS_OPTS=--prefix=/jenkins
  volumes_from:
    - data
  ports:
    - "1236:8080"  

Restyaboard用に必要な以下のファイルはGithubから持ってきて同じフォルダにおいておきます。 * docker-entrypoint.sh * Dockerfile

Docker Composeを利用するうえで、よく利用するコマンドをメモとして残しておきます。

// Composeで起動中のイメージを確認
# docker-compose ps

// Dockerfileをビルドします
# docker-compose build

// デーモン状態で起動します
# docker-compose up -d