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.yml
をdocker-compose.yml
にリネームして使用するか、-f
オプションでdocker-compose-without-ssl.yml
を明示してください。- 通信の暗号化は行われませんので、自己責任でのご利用をお願いします。
- SSLプロキシとして使用している
自己署名証明書を生成する例:
# 秘密鍵を生成
$ 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