LoginSignup
0
3

More than 1 year has passed since last update.

GrowiをSynologyでDocker-composeして構築するとElasticsearchがクラッシュしたときにやったこと

Posted at

はじめに

社内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

解決法

https://techoverflow.net/2020/04/18/how-to-fix-elasticsearch-docker-accessdeniedexception-usr-share-elasticsearch-data-nodes/
ここを参照

どうやら権限がうまく与えられていないようです。

sudo chown -R 1000:1000 /volume1/docker/growi

これで無事にgrowiが立ち上がりました。
同じように困っている方のお役にたてば幸いです。

0
3
1

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
0
3