はじめに
個人開発の設計書は、Googleスプレッドシートで管理していましたが、
GrowiというオープンソースのWikiシステムを知り、せっかくなら楽しく(新しいシステムに触れながら)、
開発したかったので、Growiを使って設計書を管理するようにしました。
Growiは、QiitaのようにMarkdownでの記述が可能で、また以下のような特徴があります。
・検索が速い。
ElasticSearchが使われおり、検索が速いです。
・ファイルの差分管理が可能
・UMLの記述も可能
plantumlと連携することで、UMLも設計書に記述が可能です。
簡単に導入が可能なので、まずは使って見て下さい。
それでは、インストール、インストール後の設定及び
簡単な設計書の作成までの手順について紹介します。
※ 本投稿は、Mac OSを前提としています。
macOS Catalina 10.15.3で作業しています。
前提条件
docker-composeを使って、Growiの環境を用意します。
docker-composeはDocker for Macに含まれていますので、
Docker for Macがインストールされていない場合、
最初にDocker for Macをインストールして下さい。
※ 参考情報(Docker for Macのインストール)
1. Growiのダウンロード
(1) 任意の作業ディレクトリへの移動
任意の作業ディレクトリを用意し、移動して下さい。
(2) Gitコマンドの実行
作業ディレクトリで、以下のコマンドを実行します。
$ git clone https://github.com/weseek/growi-docker-compose.git growi
(3) growi への移動
上記で、growiディレクトリが作成されるので、移動します。
$ cd growi
2. 設定変更
前項「#1. Growiのダウンロード」の状態でも、「docker-compose up -d」を実行すると、
Growiの利用が可能になりますが、本投稿では幾つかの修正を行います。
docker-compose.ymlの修正を行います。
2-1. docker-compose.ymlの修正
docker-compose.ymlを開き、以下の[修正後]の内容を記述して保存します。
[修正前]
version: '3'
services:
app:
build:
context: .
dockerfile: ./Dockerfile
ports:
- 127.0.0.1:3000:3000 # localhost only by default
links:
- mongo:mongo
- elasticsearch:elasticsearch
depends_on:
- mongo
- elasticsearch
environment:
- MONGO_URI=mongodb://mongo:27017/growi
- ELASTICSEARCH_URI=http://elasticsearch:9200/growi
- PASSWORD_SEED=changeme
# - FILE_UPLOAD=mongodb # activate this line if you use MongoDB GridFS rather than AWS
# - 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
# - PLANTUML_URI=http:// # activate this line and specify if you use your own PlantUML server rather than public plantuml.com
# - HACKMD_URI=http:// # activate this line and specify HackMD server URI which can be accessed from GROWI client browsers
# - HACKMD_URI_FOR_SERVER=http://hackmd:3000 # activate this line and specify HackMD server URI which can be accessed from this server container
# - FORCE_WIKI_MODE='public' # activate this line to force wiki public mode
# - FORCE_WIKI_MODE='private' # activate this line to force wiki private mode
command: "dockerize
-wait tcp://mongo:27017
-wait tcp://elasticsearch:9200
-timeout 60s
npm run server:prod"
restart: unless-stopped
volumes:
- growi_data:/data
mongo:
image: mongo:3.6
restart: unless-stopped
volumes:
- mongo_configdb:/data/configdb
- mongo_db:/data/db
elasticsearch:
build:
context: ./elasticsearch
dockerfile: ./Dockerfile
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms256m -Xmx256m" # increase amount if you have enough memory
ulimits:
memlock:
soft: -1
hard: -1
restart: unless-stopped
volumes:
- es_data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
volumes:
growi_data:
mongo_configdb:
mongo_db:
es_data:
[修正後]
version: '3'
services:
app:
build:
context: .
dockerfile: ./Dockerfile
ports:
- 127.0.0.1:3000:3000 # localhost only by default
links:
- mongo:mongo
- elasticsearch:elasticsearch
depends_on:
- mongo
- elasticsearch
environment:
- MONGO_URI=mongodb://mongo:27017/growi
- ELASTICSEARCH_URI=http://elasticsearch:9200/growi
- PASSWORD_SEED=changeme
# - FILE_UPLOAD=mongodb # activate this line if you use MongoDB GridFS rather than AWS
- 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
- PLANTUML_URI=http://localhost:8080/ # activate this line and specify if you use your own PlantUML server rather than public plantuml.com
# - HACKMD_URI=http:// # activate this line and specify HackMD server URI which can be accessed from GROWI client browsers
# - HACKMD_URI_FOR_SERVER=http://hackmd:3000 # activate this line and specify HackMD server URI which can be accessed from this server container
# - FORCE_WIKI_MODE='public' # activate this line to force wiki public mode
# - FORCE_WIKI_MODE='private' # activate this line to force wiki private mode
command: "dockerize
-wait tcp://mongo:27017
-wait tcp://elasticsearch:9200
-timeout 60s
npm run server:prod"
restart: unless-stopped
volumes:
- growi_data:/data
mongo:
image: mongo:3.6
restart: unless-stopped
volumes:
- mongo_configdb:/data/configdb
- mongo_db:/data/db
elasticsearch:
build:
context: ./elasticsearch
dockerfile: ./Dockerfile
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms256m -Xmx256m" # increase amount if you have enough memory
ulimits:
memlock:
soft: -1
hard: -1
restart: unless-stopped
volumes:
- es_data:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
plantumlserver:
image: plantuml/plantuml-server:jetty
restart: unless-stopped
ports:
- "8080:8080"
volumes:
growi_data:
driver_opts:
type: none
device: $PWD/data/growi_data
o: bind
mongo_configdb:
driver_opts:
type: none
device: $PWD/data/mongo_configdb
o: bind
mongo_db:
driver_opts:
type: none
device: $PWD/data/mongo_db
o: bind
es_data:
driver_opts:
type: none
device: $PWD/data/es_data
o: bind
[修正した箇所の説明]
① ファイルのアップロード先の変更
"- FILE_UPLOAD=local" がコメントアウトされているので、コメントアウトを外します。
ファイルのアップロード先がローカル(Dockerホストのボリューム内)となります。
② MATHJAXの有効化
"- MATHJAX=1" がコメントアウトされているので、コメントアウトを外します。
③ plantumlの有効化
"- PLANTUML_URI=http://" がコメントアウトされているので、コメントアウトを外し、
PLANTUML_URIにhttp://localhost:8080/を設定します。
また、plantumlserver:の設定を追記します。
④ volumesの変更
growi_data mongo_configdb mongo_db es_dataについて、
Dockerホストのボリューム内にマウントします。
2-2. マウント先の作成
volumesに指定したgrowi_data mongo_configdb mongo_db es_dataについて、
ディレクトリを作成します。
$ mkdir data
$ cd data
$ mkdir growi_data mongo_configdb mongo_db es_data
[ここまでのファイル構成]
$ tree .
.
├── Dockerfile
├── LICENSE
├── README.md
├── data
│ ├── es_data
│ ├── growi_data
│ ├── mongo_configdb
│ └── mongo_db
├── docker-compose.dev.yml
├── docker-compose.yml
├── elasticsearch
│ ├── Dockerfile
│ └── config
│ ├── elasticsearch.yml
│ └── log4j2.properties
├── examples
│ ├── backup-mongodb-data
│ │ ├── README.md
│ │ ├── crontab
│ │ │ └── root
│ │ └── docker-compose.override.yml
│ ├── https-portal
│ │ ├── README.md
│ │ └── docker-compose.override.yml
│ ├── integrate-with-hackmd
│ │ ├── README.md
│ │ └── docker-compose.override.yml
│ └── multi-app
│ ├── README.md
│ └── docker-compose.yml
└── hackmd
├── Dockerfile
├── apply-growi-agent.sh
└── config.json
3. Growiの作成
3-1. docker-compose up -dの実行
以下のコマンドを実行します。
$ docker-compose up -d
3-2. Dockerの確認
(1) Dockerプロセスの確認
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09ee25e4b028 growi_app "/sbin/tini -e 143 -…" About a minute ago Up 15 seconds 127.0.0.1:3000->3000/tcp growi_app_1
157ddbc96f45 growi_elasticsearch "/usr/local/bin/dock…" About a minute ago Up About a minute 9200/tcp, 9300/tcp growi_elasticsearch_1
a7676ac10a7d plantuml/plantuml-server:jetty "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:8080->8080/tcp growi_plantumlserver_1
646fb8f4ffe0 mongo:3.6 "docker-entrypoint.s…" About a minute ago Up About a minute 27017/tcp growi_mongo_1
(2) Dockerイメージの確認
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
growi_app latest ee8c446d8db9 5 minutes ago 264MB
growi_elasticsearch latest e45b339dbf2a 7 minutes ago 860MB
plantuml/plantuml-server jetty 4fba4aa0dc27 9 hours ago 404MB
mongo 3.6 c95b2c69031b 2 days ago 439MB
weseek/growi 3 a9079d4edf10 2 weeks ago 255MB
docker.elastic.co/elasticsearch/elasticsearch 6.6.1 c6ffcb0ee97e 14 months ago 842MB
(3) Dockerボリュームの確認
$ docker volume ls
DRIVER VOLUME NAME
local growi_es_data
local growi_growi_data
local growi_mongo_configdb
local growi_mongo_db
3-3. 動作確認
(1) ブラウザを開き、"http://localhost:3000/installer"にアクセスし、
下記のように表示されていることを確認します。
(2) アカウント情報の入力
管理アカウントの情報を入力して下さい。
以下のページが開きます。
(3) Site URL settingsの設定
Site URL settingsを設定しないと、幾つかの機能に制限が掛かります。
本投稿では、http://127.0.0.1:3000を設定します。
ここまでが、Growiの環境構築までの手順となります。
次項では、設計書を作成します。
4. 設計書の作成
(2) 次にファイル名を入力し、「Create」ボタンを押下します。
(3) ページの内容を記述し、「Create」ボタンを押下します。
ここでは、Markdown、plantumlがそれぞれ記述できるか確認しています。
以上となります。
Elasticsearch の検索は割愛しましたが、
他にも機能が豊富なので、色々と試して下さい。
参考情報(Docker for Macのインストール)
Docker for Macをダウンロードする際、Dockerの公式サイトにログインする必要があります。
Dockerの公式サイトにログインするためのユーザを作成して下さい。
1. Docker for Mac
最初にDocker for Macのインストールを行います。
Docker Composeは、Docker for Macに含まれています。
1-1. ダウンロード
以下のサイトからダウンロードします。
https://docs.docker.com/docker-for-mac/install/
(1) 「Download from Docker Hub」ボタンを押下します。
(2) 「Download Docker Desktop for Mac」ボタンを押下します。
Docker.dmg がダウンロードされます。
1-2. インストール
(1) Docker.dmgの実行
ダウンロードした Docker.dmg を実行して下さい。
(2) Applicationsに移動
DockerをApplicationsに移動させます。
(3) Dockerの実行
アプリケーションからDockerを実行して下さい。
1-3. 確認
(1) ターミナルを開き、"docker --version"を実行します。
インストールしたDockerのバージョンを確認します。
$ docker --version
Docker version 19.03.5, build 633a0ea
(2) 次に、"docker-compose --version"を実行します。
Docker Composeのバージョンを確認します。
$ docker-compose --version
docker-compose version 1.25.4, build 8d51620a
参考元
Growi本家
Growi(Markdown記法によるWikiプラットフォーム)をdocker-composeで稼働させる
DockerでGrowiをセットアップする
Growi:ユーザーズガイド