2.3. Dockerにインストール

Docker 上にJijiをインストールします。

1. 必要なソフトウェアをインストールします

以下のソフトウェアが必要です。

  • Git
  • Docker .. 1.9以降
  • Docker Compose .. 1.5以降
$ git --version
git version 1.8.3.1
$ sudo docker --version
Docker version 1.9.0, build 76d6bc9
$ sudo docker-compose --version
docker-compose version: 1.5.0
※動作確認はCentOS 7上で行っています。以下のコマンドもCentOS 7を前提にしていますので、他の環境の場合は適宜読み替えてください。

2. Docker Compose設定ファイルのひな形をチェックアウトします。

今後、docker-compose コマンドを実行する場合は、チェックアウトしたディレクトリで実行します。 (または、このディレクトリにある docker-compose.yml を引数で指定して実行します。)

$ git clone https://github.com/unageanu/docker-jiji2
$ cd docker-jiji2

3. SSL証明書を用意します。

  • ドメインを所有している場合は、Let’s Encryptを利用して、無料でSSL証明書を取得できます。
    • 取得方法はこちらをご覧ください。

  • ローカルで作成した自己署名証明書を使用することもできます。
    • 自己署名証明書を使用した場合、通信の暗号化はできますがサーバー認証はできません。 ブラウザおよびアプリで警告が表示されますので、ご了承ください。
    • 自己責任でのご利用をお願いします。

  • SSLを利用しない場合は、 docker-compose-without-ssl.yml をご使用ください。
    • SSLプロキシとして使用している Nginx なしの構成でセットアップします。
    • docker-compose-without-ssl.ymldocker-compose.yml にリネームして使用するか、 -f オプションで docker-compose-without-ssl.yml を明示してください。
    • 通信の暗号化は行われませんので、自己責任でのご利用をお願いします。

自己署名証明書を生成する例:

# 秘密鍵を生成
$ openssl genrsa 2048 > server.key
# CSRを作成
$ openssl req -new -key server.key > server.csr
# サーバー証明書を作成
$ openssl x509 -sha256 -days 365 -req -signkey server.key < server.csr > server.crt
# アクセス権を制限
$ sudo chown root.root server.key
$ sudo chmod 600 server.key

4. docker-compose.yml を編集します。

以下の項目を設定します。

  • 秘匿データの暗号化に使うキー ( jiji - environment - USER_SECRET )
    • 必ず変更して使用してください。UIから入力を求められることはないので、任意の長い文字列を使用すればOKです。
  • SSL証明書のパス ( nginx - volumes )
    • 3 で用意したSSL証明書の公開鍵と秘密鍵のパスを設定します。
    • ./path/to/ssl.key のように ./ で始めることで、 docker-compose.yml からの相対パスで指定できます。
  • MongoDBデータの保存先 ( mongodb - volumes )
    • デフォルトでは、MongoDBコンテナ内に作成されます。
    • ホストマシンの任意の場所に保存したい場合は、 volumes のコメントを解除して、保存先のパスを設定します。
  • ポート番号 ( nginx - ports, mongodb - ports, jiji - ports )
    • デフォルトでは、Jijiがポート8443、mongodbがポート27018 を使用します。(SSLを使用しない場合、Jijiは8080を使用します)
    • 必要に応じてカスタマイズしてください。

以下は設定例です。

jiji:
  container_name: jiji_jiji
  image: unageanu/jiji:latest
  environment:
    # サーバー内部で秘匿データの暗号化に使うキー
    # 必ず変更して使用してください。
    USER_SECRET: 20e43fa41e75c9fe958f5f11bc9e79d2174b50b
  links:
    - mongodb

mongodb:
  container_name: jiji_mongodb
  image: mongo:3.0.7
  ports:
    # MongoDBのポート番号
    # 必要に応じて変更してください。
    - "27018:27017"
  volumes:
    # MongoDBのデータを保存するディレクトリ
    # デフォルトでは、コンテナ内に作成します。(この場合、コンテナを再作成すると、データが初期化されます)
    # コメントアウトしてパスを設定することで、ホストマシンの任意のディレクトリに変更することができます。
    # './' で始めることで、docker-compose.ymlからの相対パスで指定可能です。
    - ./path/to/data/dir:/data/db

nginx:
  container_name: jiji_nginx
  image: unageanu/jiji-nginx:latest
  links:
    - jiji
  ports:
    # Jijiのポート番号
    # 必要に応じて変更してください。
    - "8443:443"

  volumes:
    # SSL証明書のパス
    # './path/to/server.crt' にサーバー証明書、
    # './path/to/server.key' に秘密鍵を指定します。
    # './' で始めることで、docker-compose.ymlからの相対パスで指定可能です。
    - ./path/to/server.crt:/etc/nginx/cert/ssl.crt:ro
    - ./path/to/server.key:/etc/nginx/cert/ssl.key:ro

5. Dockerコンテナを起動します。

$ sudo /usr/local/bin/docker-compose up -d
Creating jiji_mongodb
Creating jiji_jiji
Creating jiji_nginx

以下のコマンドで、起動しているコンテナを確認できます。

$ sudo docker ps -a

起動していれば、以下のURLでJijiにアクセスできます。

https://<インストール先ホスト>:<docker-compose.ymlで設定したJijiのポート/デフォルトは8443>

※SSLを利用しない場合は以下のURLになります。

http://<インストール先ホスト>:<docker-compose.ymlで設定したJijiのポート/デフォルトは8080>


※Jijiが動作しない場合、起動ログを確認してください。起動ログは、以下のコマンドで確認できます。

$ sudo docker logs jiji_jiji
$ sudo docker logs jiji_nginx
$ sudo docker logs jiji_mongodb

補足1: コンテナを停止・再起動する

Jijiを停止するには以下のコマンドを実行します。

$ sudo docker stop jiji_nginx
$ sudo docker stop jiji_jiji

停止したコンテナを再起動するには、start コマンドを実行します。

$ sudo docker start jiji_jiji
$ sudo docker start jiji_nginx

補足2: サービスのログを確認する

logsコマンドでコンテナのログを確認できます。

$ sudo docker logs jiji_jiji
$ sudo docker logs jiji_mongodb
$ sudo docker logs jiji_nginx