Help us understand the problem. What is going on with this article?

MacにDockerでGrowiを導入する

概要

growiをmacのローカル環境に構築してみる。CentOS上に一つずつコマンド等でインストールして構築もできましたが、Dockerだと本当にあっという間に終了します。

今回はMacで行いましたが、CentOS7環境でも特に問題なく構築できました(2020/03/01)

Growiドキュメント

https://docs.growi.org/ja/guide/

環境確認

※Dockerとdocker-composeはそれぞれインストール済みとします

Mac

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.13.4
BuildVersion:   17E202

ホームディレクトリの確認

hogeユーザーでログインして作業しているとします。

$ echo ~
/Users/hoge

Docker

$ docker --version
Docker version 19.03.2, build 6a30dfc

docker-compose

$ docker-compose --version
docker-compose version 1.24.1, build 4667896b

手順

作業場所の決定

以下のように決定して作業します。

項目 パス 備考
docker関連保存場所 ~/srv/docker/growi git cloneするとgrowi-docker-composeディレクトリが生成される
データ保存場所 ~/srv/docker/growi/data データをホスト間で明示的に永続化するため

※ ~/srvでなくても、任意の場所で構いません。適宜読み替えてください

growi-docker-compose のダウンロード

$ mkdir -p ~/srv/docker/growi
$ cd ~/srv/docker/growi
$ git clone https://github.com/weseek/growi-docker-compose.git
$ cd growi-docker-compose

docker-compose.ymlの編集

以下を可能にする変更を行います。

  1. localhost以外からのアクセスを許可
  2. パスワードのSEEDをchangemから変更
  3. MATHJAXを有効にする(必須ではない)
  4. ファイルアップロードをローカルで受け付ける
  5. データをホスト間で明示的に共有する
$ cp -p docker-compose.yml docker-compose.yml.org
$ vi 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
      - 3000:3000    ### 外部からのアクセスを受け付ける
    links:
      - mongo:mongo
      - elasticsearch:elasticsearch
    depends_on:
      - mongo
      - elasticsearch
    environment:
      - MONGO_URI=mongodb://mongo:27017/growi
      - ELASTICSEARCH_URI=http://elasticsearch:9200/growi
      - PASSWORD_SEED=tekitounihenkou   ### changemを適当な文字に変更する
      # - FILE_UPLOAD=mongodb   # activate this line if you use MongoDB GridFS rather than AWS
      - FILE_UPLOAD=local     ### ファイルアップロードはローカルで受け付ける
      - 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:
      driver_opts:
        type: none
        device: /Users/hoge/srv/docker/growi/data/growi_data
        o: bind
   mongo_configdb:
      driver_opts:
        type: none
        device: /Users/hoge/srv/docker/growi/data/mongo_configdb
        o: bind
   mongo_db:
      driver_opts:
        type: none
        device: /Users/hoge/srv/docker/growi/data/mongo_db
        o: bind
   es_data:
      driver_opts:
        type: none
        device: /Users/hoge/srv/docker/growi/data/es_data
        o: bind
   es_plugins:
      driver_opts:
        type: none
        device: /Users/hoge/srv/docker/growi/data/es_plugins
        o: bind

※device:はフルパスを指定する必要があります。

ホスト側のディレクトリを作成

$ mkdir -p ~/srv/docker/growi/data
$ cd ~/srv/docker/growi/data
$ mkdir growi_data mongo_configdb mongo_db es_data es_plugins

Dockerを起動する

$ cd ~/srv/docker/growi/growi-docker-compose
# backgroudで起動する
$ docker-compose up -d

3000番ポートで稼働していることが確認出来ます。

$ docker ps -a
CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS                    NAMES
fe9d79e89411        growi-docker-compose_app             "/docker-entrypoint.…"   2 days ago          Up 2 days           0.0.0.0:3000->3000/tcp   growi-docker-compose_app_1
647e08d93ed7        mongo:3.6                            "docker-entrypoint.s…"   2 days ago          Up 2 days           27017/tcp                growi-docker-compose_mongo_1
8b4bfb0cdfa4        growi-docker-compose_elasticsearch   "/usr/local/bin/dock…"   2 days ago          Up 2 days           9200/tcp, 9300/tcp       growi-docker-compose_elasticsearch_1

docker-composeコマンドでも確認することが出来ます

$ docker-compose ps
                Name                              Command               State           Ports
------------------------------------------------------------------------------------------------------
growi-docker-compose_app_1             /docker-entrypoint.sh dock ...   Up      0.0.0.0:3000->3000/tcp
growi-docker-compose_elasticsearch_1   /usr/local/bin/docker-entr ...   Up      9200/tcp, 9300/tcp
growi-docker-compose_mongo_1           docker-entrypoint.sh mongod      Up      27017/tcp

URlアクセス確認

http://localhost:3000 にアクセス
初回アクセスはセットアップ画面が表示されます。
最初に作成されるアカウントには、自動的に管理者権限が付与されます。

スクリーンショット 2019-10-25 1.03.04.png

バックアップとリストア

上記手順でインストールしたGrowiのバックアップとリストアを手動で行ってみます。公式サイトでは別途手順があるかと思いますので、そちらも参照してください。

バックアップ

アプリケーションの停止

  cd ~/srv/docker/growi/growi-docker-compose
  docker-compose stop

データファイル全てのバックアップ

  cd ~/srv/docker/growi/
  tar cvfz  data-growi.20200223.tar.gz data

  # 現在時刻でバックアップを作成する場合
  tar cvfz  data-growi.`date +%Y%m%d-%H%M%S`.tar.gz data

リストア

dataディレクトリを復元したいバックアップで置き換える

  mv data data_org
  tar xvfz data-growi.20200223.tar.gz

アプリケーションの起動

  cd ~/srv/docker/growi/growi-docker-compose
  docker-compose start

確認

http://localhos3000/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした