JenkinsとRocket.ChatもDockerで動かす

GitBucketをDockerで動かせましたので、続いてJenkinsRocket.ChatもDockerで動かしましょう。いずれも公式のDockerイメージが公開されていますので、それを利用させて頂きましょう。

ここでは、GitBucketは8080番、Jenkinsは8081番、Rocket.Chatは8082番の各ポートで動作するよう設定します。設定ファイル docker-compose.yml はこんな感じになります。

version: '2'

services:
  gitbucket:
    image: takezoe/gitbucket
    container_name: gitbucket
    volumes:
      - ./gitbucket/data:/gitbucket
    environment:
      - TZ=JST-9
    ports:
      - 8080:8080
      - 29418:29418

  jenkins:
    image: jenkins:alpine
    container_name: jenkins
    volumes:
      - ./jenkins/home:/var/jenkins_home
      - ./jenkins/executors.groovy:/usr/share/jenkins/ref/init.groovy.d/executors.groovy
    environment:
      - JAVA_OPTS=-Duser.timezone=Asia/Tokyo
    ports:
      - 8081:8080
      - 50000:50000

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

  rocket.chat:
    image: rocket.chat:latest
    container_name: rocket.chat
    environment:
      - ROOT_URL=http://localhost:8082
    links:
      - db
    ports:
      - 8082:3000

Rocket.ChatはMongoDBに依存していますので、mongodbの設定もあります。command行で --smallfiles の指定がないと./db/data以下に巨大なファイルが作成されますのでご注意を。また、ROOT_URLの値は環境に合わせて適宜変更して下さい。

設定ファイルを編集・保存し終えたら docker-compose up で各サービスが起動します。ブラウザから各サービスにアクセスしてみましょう。

2016/02/21追記: environmentによるタイムゾーンの設定を追加しました。

Docker Composeをインストールする

引き続き環境設定です。

Dockerをインストールしたことでサービスをコンテナ上のプロセスとして起動できるようになりましたが、先の記事にも書いたようにマイクロサービスアーキテクチャ的なアプローチでは複数のプロセス(サービス)を立ち上げる必要があります。しかし素のdockerコマンドは複数のコンテナを立ち上げるには少々不便です。そこで複数のコンテナを一つの設定ファイルで管理すべくDocker Composeを導入します。

Debian Stretch (testing)にはdocker-composeパッケージが提供されていますが、バージョンが少々古め(記事執筆時点で1.8.0)です。なるべく新しめのバージョンを利用したいので、ここではgithubからバイナリを取得、インストールしてみたいと思います。これまたインストール方法の詳細はDocker Composeのサイトに記述のある通りですが、インストール先をホームディレクトリの下の ~/bin に変えてみます。

$ mkdir ~/bin
$ curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o ~/bin/docker-compose
$ chmod +x ~/bin/docker-compose
$ vi ~/.bash_profile
...
export PATH=$PATH:~/bin
...
$ . ~/.bash_profile

既に~/binにPATHが通っている場合は適宜読み飛ばして下さい。また、システム全体でdocker-composeコマンドを使えるようにしたい場合はサイトに記載されている通り、/usr/local/binにインストールするのが無難かも知れません。

なお、多少バージョンが古くてもよい場合は sudo apt-get install docker-compose でもOKです。Docker Composeのサイトには pip install する方法も記載されていますが、個人的にはpipはvirtualenv環境下でしか使いたくないのでスルーしています。

Dockerをインストールする

Intel JouleJetson TX1のようなエッジ機器だけあってもIoTは成り立ちません。エッジから押し上げられるデータを受け止めるサーバ/クラウドサイドの仕組みも必要です。単純には、Linux等でサーバを立ち上げて、その上にエッジからのデータを受け取る機能と保存する機能、保存したデータを利用する機能を実現することになります。

従来のシステム開発ではこれらの機能をモノリシックなウェブサービスとして構築してきましたが、今時は単機能なマイクロサービスを(オープンな)プロトコルで疎に結合するアーキテクチャが流行りです。これを実現するために、Dockerコンテナを利用しましょう。

Dockerコンテナの技術的な説明は他の情報源に譲ります。

“Dockerをインストールする” の続きを読む