ローカルで運用できる,Wikiをずっと探していたのですが,Growi
が非常に使いやすくてUIもオシャレなので,今回はDockerを使って導入・運用をDocker初心者が行って行きます.
導入
GitHubにdocker-compose版が公式に公開されているので,それをcloneする.
$ git clone https://github.com/weseek/growi-docker-compose.git
公開するような設定
デフォルトでは,localhost
でしか動作しないようにdocker-comopose.yml
が記述されているので,
services:
app:
ports:
- 127.0.0.1:3000:3000
の部分を
services:
app:
ports:
- 3000:3000
に変更しておくと,そのサーバのIPアドレスでGrowiにアクセスが可能になる.
ファイルのアップロード設定
デフォルトでは,AWSでの運用が想定されているので,docker-compose.yml
のFILE_UPLOAD=local
を有効にする.
environment:
- MONGO_URI=mongodb://mongo:27017/growi
- ELASTICSEARCH_URI=http://elasticsearch:9200/growi
- PASSWORD_SEED=changeme
- 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
起動
$ docker-compose up -d
バックアップ
Database
growiに必要なコンテナを全て起動した状態で,
$ docker run -it --rm --link growi_mongo_1 --network growi_default --volume $(pwd):/backup mongo bash -c "mongodump -v --host growi_mongo_1 --db growi --out /backup"
これで,カレントディレクトリの直下に/growi
ディレクトリが生成されます.
中には,ユーザ情報や記事情報が保存されています.
Uploaded Files
アップロードファイルは,growiのコンテナIDをdocker psで調べて,
$ docker cp {growiのコンテナID}:/data .
これで,カレントディレクトリの直下にdata
ディレクトリが生成されます.
中には,アップロードファイルが保存されています.
PASSWORD_SEEDの取り出し
パスワードハッシュ用の環境変数PASSWORD_SEED
を取得しておかないと,移行先のgrowiを初回起動したときに,自動生成されログインできなくなります.私は,docker-compose.yml
に値を設定しているのでそれを用います.
リストア
バックアップで生成した/growi
を用いて.
$ docker run -it --rm --link growi_mongo_1 --network growi_default --volume $(pwd):/backup mongo bash -c "mongorestore -v --host growi_mongo_1 --db growi backup/growi"
$ docker-compose restart
ファイルも同じように/data
を用いて.
docker cp ./data {growiのコンテナID}:.
以上で私の場合は復旧できました!!