はじめに
社内Wikiとしてオンプレミス環境でGrowiを構築することになりました。今いる部署ではサーバーまわりは自分一人でやらなければいけないので、独学で勉強していました。
部署内でサクッといじれるサーバーがSynologyのNASだったので、ここでDocker-composeしてGrowiを立ち上げようとしたのですが、なかなか上手く行きませんでした。やっと解決したので(基本的なことかもしれませんが)解決方法をメモ代わりにおいておきます。
##環境
DS3617xsとDS218+
DS3617xsはオンプレミスで、DS218+はネットに繋がっています
docker-compose upまで
先駆者の方々が丁寧な記事を残してくださっているので、この通りにやりました。
https://www.my-hacks.info/2021/06/03/post-1733/
https://wiki.adminsblog.com/Knowledge/Hardware/Synology/Docker/GROWI
一言で説明すると、SynologyでDocker-composeする際は、gitとdockerをDSMでインストールした上で、SSHでsudo -iでroot権限でやるとすんなりいきます。
一応今回設定したdocker-compose.ymlも置いておきます。HackMDも入れています。
必要があるのかわかりませんが、/volume1/docker/growi とpathをちゃんと書き直しました。
version: '3'
services:
app:
build:
context: .
dockerfile: ./Dockerfile
ports:
- 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://hogehoge.wiki # activate this line and specify HackMD server URI which can be accessed from GROWI client browsers
# - HACKMD_URI_FOR_SERVER=http://localhost: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
entrypoint: "dockerize
-wait tcp://mongo:27017
-wait tcp://elasticsearch:9200
-timeout 260s
/docker-entrypoint.sh"
command: ["yarn migrate && node -r dotenv-flow/config --expose_gc dist/server/app.js"]
restart: unless-stopped
volumes:
- /volume1/docker/growi/growi_data:/data
mongo:
image: mongo:4.4
restart: unless-stopped
volumes:
- /volume1/docker/growi/mongo_configdb:/data/configdb
- /volume1/docker/growi/mongo_db:/data/db
elasticsearch:
build:
context: ./elasticsearch
dockerfile: ./Dockerfile
environment:
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms3g -Xmx3g" # increase amount if you have enough memory
- LOG4J_FORMAT_MSG_NO_LOOKUPS=true # CVE-2021-44228 mitigation for Elasticsearch <= 6.8.20/7.16.0
ulimits:
memlock:
soft: -1
hard: -1
restart: unless-stopped
volumes:
- /volume1/docker/growi/es_data:/usr/share/elasticsearch/data
- /volume1/docker/growi/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
volumes:
growi_data:
mongo_configdb:
mongo_db:
es_data:
最後の
volumes:
growi_data:
mongo_configdb:
mongo_db:
es_data:
ですが、紹介されているところだと省略されていることが多いですが、自分の環境では省略するとエラーになりました。どこかのヘルプでも記載しないとエラーになるとされていたので、記載しておきます。
あとsynology DSMのテキストエディタだとCRLFが入ってしまうことがありエラーの温床になるので、編集はvimで行うほうが安全だと思いました。
##docker-compose upでエラー
さて、こうやってDocker-composeをする
docker-compose up
と、elasticsearchが何度も再起動するエラーが。
ログをみてみるとこんなエラーを発見。
java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
解決法
どうやら権限がうまく与えられていないようです。
sudo chown -R 1000:1000 /volume1/docker/growi
これで無事にgrowiが立ち上がりました。
同じように困っている方のお役にたてば幸いです。