オフラインでも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