使用 Growi 进行设计书的管理
首先
个人开发的设计书,原本是用Google表格来管理的,但是后来了解到了一个名为Growi的开源Wiki系统,既然有机会的话,为了享受其中乐趣(同时体验新系统),我决定开始使用Growi来管理设计书。
Growi是一种类似于Qiita的平台,可以使用Markdown进行记录,并具有以下特点:
– 快速搜索:使用了ElasticSearch,搜索非常迅速。
– 文件差异管理:可以管理文件的差异。
– 可以记录UML:通过与plantuml的集成,可以在设计文档中编写UML代码。
请先试用一下,因为它非常容易安装。
接下来,我将介绍安装、安装后的设置以及简单设计文档的创建步骤。
※ 本帖是基于Mac OS的前提条件。
我正在使用macOS Catalina 10.15.3进行操作。
前提条件 tí
使用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的配置。
④ 更改卷的设置
将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. 验证操作
这是到达 Growi 环境搭建的步骤。接下来,我们将创建设计文档。
4. 编写设计书
以上是以上的意思。
由于篇幅限制,我们没有介绍Elasticsearch的搜索功能,但是它还有很多其他丰富的功能,建议您多多尝试。
参考资料(Docker for Mac的安装)
下载Docker for Mac时,需要登录Docker官方网站。
请创建用于登录Docker官方网站的用户。
1. Mac 上的 Docker
我們首先要安裝Docker for Mac。
Docker Compose已經包含在Docker for Mac中。
1-1. 下载
我将从以下网站下载:
https://docs.docker.com/docker-for-mac/install/
1-2. 安装
请执行下载的 Docker.dmg 文件。
请从应用程序中运行Docker。
1-3. 确认
打开终端,运行”docker –version”命令。
确认安装的Docker版本。
$ docker --version
Docker version 19.03.5, build 633a0ea
接下来,执行命令 “docker-compose –version” 来确认 Docker Compose 的版本。
$ docker-compose --version
docker-compose version 1.25.4, build 8d51620a
参考来源
使用docker-compose来运行基于Markdown语法的Wiki平台Growi
使用Docker设置Growi
Growi:用户指南