GrowiをDockerでインストールする手順

日本製OSSでありながら使いやすいインタフェースとカッコよさで最高なナレッジ共用ツールである Growi 。今回はその Growi を Docker で CentOS (今回は CentOS 7 を利用) のサーバにインストールする手順を残しておきたく思います。主に自分メモ用。

ちなみにインストールには、Docker と docker-compose も必要になるのでその手順も合わせて紹介。また、前提条件としてインストールする Growi のコンテナはブリッジ接続を行います。

Dockerのインストール

まずは下記手順でDockerをインストール。インストールは yum で行います。
console
$ yum install yum-utils
$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
$ yum install docker-ce docker-ce-cli containerd.io
Dockerを起動。
console
$ systemctl start docker
$ systemctl status docker

起動しているコンテナを確認。(何も表示されない)
$ docker ps
自動起動の設定と、動作確認の為の hello-world コンテナの作成と実行。
console
$ systemctl enable docker
$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
c1ec31eb5944: Pull complete
Digest: sha256:d000bc569937abbe195e20322a0bde6b2922d805332fd6d8a68b19f524b7d21d
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
ちなみにこの時点でブリッジ用のインタフェースが作成されるので、ip a などで確認してみると docker0 (172.17.0.1) のネットワークが追加されてるはずです。

また、この時点でもしSSH接続に利用している端末のネットワーク範囲が 172.17.0.0 だったりするとSSHが繋がらなくなるので注意。。。

docker-compose のインストール

続いて docker-compose のインストール。
console
$ curl -L "https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
$ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

$ docker-compose --version
Docker Compose version v2.24.7

(必要に応じて)ブリッジネットワークのIP範囲を変更

自動作成されたdefaultのブリッジネットワークについて、もしIP範囲が被っていたりするとSSHが切断されて繋がらなくなるので、その際はブリッジのIP範囲を変更します。自分の場合は、クライアントPC側のネットワークが 172.17 となっており突然ぶった切られました。。

今回は 172.17.0.0/16 → 192.168.1.0/24 に変更してみます。
console
$ vi /etc/docker/daemon.json
下記を記載して保存。
console
{
  "bip": "192.168.1.0/24"
}
あとはDockerを再起動すれば適用されます。
console
$ systemctl status docker
$ systemctl stop docker
$ systemctl start docker
$ ifconfig
  ✔ブリッジネットワークが 192.18.1.0/24 のIPに変更されてるはず。

Gitのインストール

Growiのインストールの際にGitサイトから取得してくるのでgitをインストールしておきます。
console
$ yum install git

GrowiのDockerイメージを作成して起動

下記手順でGrowiのコンテナの設定を修正。
console
# cd /opt/
# git clone https://github.com/weseek/growi-docker-compose.git growi
# cd growi/
# cp -p docker-compose.yml docker-compose.yml.org
# vi docker-compose.yml
下記内容でファイルを修正。ちなみに今回は割当メモリも増やしたいと思うのでその内容も変更してます。また、docker-compose をすると自動で専用のブリッジインタフェースが作成されてしまうので、そのIP範囲も事前に設定しておきます。
console
▼ 下記内容で修正

- 127.0.0.1:3000:3000    # localhost only by default
 ↓ ローカルホスト以外からの接続を許可
- 3000:3000    # localhost only by default

- "ES_JAVA_OPTS=-Xms256m -Xmx256m"  # increase amount if you have enough memory
 ↓ 割当メモリを増やす
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"  # increase amount if you have enough memory


▼ 下記を最下部に追記

networks:
  default:
    ipam:
      config:
        - subnet: 192.168.2.0/24
これで準備が完了。あとは docker-compose up でコンテナイメージを作成してそのまま起動します。
ちなみに -d オプション をつけてバックグラウンドで実行。
console
# docker-compose up -d
# docker ps
 ✔稼働していることを確認
CONTAINER ID   IMAGE                 COMMAND                   CREATED              STATUS              PORTS                    NAMES
4b9fad1f9da4   growi-app             "dockerize -wait tcp…"   About a minute ago   Up About a minute   0.0.0.0:3000->3000/tcp   growi-app-1
38044b537994   mongo:6.0             "docker-entrypoint.s…"   About a minute ago   Up About a minute   27017/tcp                growi-mongo-1
c62621fce15c   growi-elasticsearch   "/bin/tini -- /usr/l…"   About a minute ago   Up About a minute   9200/tcp, 9300/tcp       growi-elasticsearch-1


# docker network ls
NETWORK ID     NAME            DRIVER    SCOPE
2f473e56a95b   bridge          bridge    local
2c8b61fb2f26   growi_default   bridge    local ← ★専用のブリッジインタフェースが作られてる
170e9949428d   host            host      local
a0261f826d22   none            null      local
これでインストールまで完了です。あっという間すぎてありがたい‥。
ブラウザからGrowiにアクセスできるはずです。
http://ホストのIPアドレス:3000/
お疲れ様でした!!!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です