LoginSignup
11
14

More than 3 years have passed since last update.

Growi を使って設計書を管理する。

Posted at

はじめに

 個人開発の設計書は、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"にアクセスし、
 下記のように表示されていることを確認します。
  FireShot Capture 015 - セットアップ - GROWI - localhost.png

 (2) アカウント情報の入力
  管理アカウントの情報を入力して下さい。
  以下のページが開きます。
   FireShot Capture 017 - App settings - GROWI - localhost.png

 (3) Site URL settingsの設定
  Site URL settingsを設定しないと、幾つかの機能に制限が掛かります。
  本投稿では、http://127.0.0.1:3000を設定します。
   FireShot Capture 020 - App settings - GROWI - localhost.png

ここまでが、Growiの環境構築までの手順となります。
次項では、設計書を作成します。

4. 設計書の作成

 (1) 最初に、画面右上の「New」ボタンを押下します。
  FireShot Capture 017 - App settings - GROWI - localhost2.png

 (2) 次にファイル名を入力し、「Create」ボタンを押下します。
  FireShot Capture 026 - App settings - GROWI - localhost.png

 (3) ページの内容を記述し、「Create」ボタンを押下します。
  ここでは、Markdown、plantumlがそれぞれ記述できるか確認しています。
  FireShot Capture 027 - _user_ryota_test_2020_05_03_firstpage - GROWI - localhost.png

  そうすると、以下のようにページが作成されます。
  FireShot Capture 028 - _user_ryota_test_2020_05_03_firstpage - GROWI - localhost.png

以上となります。

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」ボタンを押下します。
  FireShot Capture 192 - Install Docker Desktop on _ - https___docs.docker.com_docker-for-mac_install_.png

 (2) 「Download Docker Desktop for Mac」ボタンを押下します。
  Docker.dmg がダウンロードされます。
  FireShot Capture 193 - Docker Hub - https___hub.docker.com__overlay=onboarding.png

1-2. インストール

 (1) Docker.dmgの実行
  ダウンロードした Docker.dmg を実行して下さい。

 (2) Applicationsに移動
  DockerをApplicationsに移動させます。
  スクリーンショット 2020-02-09 18.57.37.png

 (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:ユーザーズガイド

11
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
14