Growi(Markdown記法によるWikiプラットフォーム)をdocker-composeで稼働させる


TL;DR

  • Markdown記法で書けるオープンソースなWikiプラットフォーム GROWI のセットアップ方法です
    • docker-composeでコンテナとして立ち上げるので,ホストの環境を汚しません
    • growiのdocker-compose版(2019/03/29時点)では,elasticsearchのイメージタグがoss版になっていないので,修正点をメモします

Growi概要

  • Growiは,数式,UML図などを含め,サイドバイサイドに編集できる高機能なWikiシステムです
  • ユーザ認証,公開設定など,複数人での編集にも効果を発揮します
  • リバースプロキシでhttps対応できます(簡単)

Dockerコンテナ群の立ち上げ

  • X-Pack絡みでElasticsearchコンテナがエラーを吐くので,OSS版Elasticsearchを使用するとスムーズです
  • growiサービスは,以下の手順で立ち上げることができます.
    1. docker-compose版のgrowiをgit cloneする
    2. docker-compose.ymlの記述をコンテナ環境に応じて修正する
    3. docker-compose upする

growi-docker-composeの取得

git clone https://github.com/weseek/growi-docker-compose.git growi

設定情報(docker-compose.yml)の修正

  • Growi本体の設定と,elasticsearchのコンテナイメージを若干修正します.
  • 修正対象は以下の2つのファイルです
    • Growiのdocker-compose構成ファイル(docker-compose.yml)
    • ElasticsearchのDockerfile(elasticsearch/Dockerfile)

growi/docker-compose.yml

  • (必須)ファイルアップロード先をローカル(Dockerホストのボリューム内)に設定し,MathJAXを有効化します
-      # - FILE_UPLOAD=local     # activate this line if you use local storage of server rather than AWS
-      # - MATHJAX=1             # activate this line if you want to use MathJax
+      - FILE_UPLOAD=local     # activate this line if you use local storage of server rather than AWS
+      - MATHJAX=1             # activate this line if you want to use MathJax
  • (任意)Growiのデータを,Docker Volume管理の場所から,ローカルディレクトリに変更します
    • Docker管理のボリュームを使う場合は,変更不要です
-      - growi_data:/data
+      - ./growi_data:/data
  • (任意)mongodbのデータ置き場を,ローカルディレクトリに変更します
    • Docker管理のボリュームを使う場合は,変更不要です
-      - mongo_configdb:/data/configdb
-      - mongo_db:/data/db
+      - ./mongo/mongo_configdb:/data/configdb
+      - ./mongo/mongo_db:/data/db
  • (任意)elasticsearchのデータ置き場を,ローカルディレクトリに変更します
    • Docker管理のボリュームを使う場合は,変更不要です
-      - es_data:/usr/share/elasticsearch/data
+      - ./es_data:/usr/share/elasticsearch/data
  • (任意)前項の,ローカルディレクトリに変更したDocker Volumeは不要なので,削除します.
-volumes:
-  growi_data:
-  mongo_configdb:
-  mongo_db:
-  es_data:

growi/elasticsearch/Dockerfile

  • (必須)oss版のelasticsearchのDockerイメージを使用するよう変更します
-FROM docker.elastic.co/elasticsearch/elasticsearch:6.6.1
+FROM docker.elastic.co/elasticsearch/elasticsearch-oss:6.6.1

docker-composeでコンテナの立ち上げ

docker-compose up

[注意] elasticsearchのデータ置き場を変更した場合

  • docker-compose upより前に,下記のようにディレクトリを作り,elasticsearchコンテナからアクセスできるようにしておく必要があります
    • この設定を行っていないと,elasticsearchコンテナがFailed to created node environment例外を発行して再起動を繰り返してしまいます
mkdir es_data
sudo chown -R 1000:1000 es_data

接続確認

  • ブラウザでlocalhost:3000にアクセスし,growiの初期設定画面が見られることを確認します.
    • アクセス制限がlocalhost限定になっているので,他のホストから接続したい場合は,docker-compse.ymlのappコンテナのports設定を修正してください.
    • ポートの変更も同じ場所(appコンテナのports設定)で対応できます.
  • 初期設定画面
  • ログイン画面
    • ログインすると,冒頭の作業画面で作業を開始できます
  • https対応は,別途nginxコンテナを立ててリバースプロキシすると良いです

参考