GrowiをRaspberry Pi 4で無理やり動かす

GrowiとRaspberry Pi 4について

2023年1月11日 GrowiがRaspberry Piにも対応しました。公式のDockerコンテナーが”linux/arm64″対応としても公開されています!
これで「Growi を Raspberry Pi 4で普通に動かす」ことが簡単にできるようになりました。

Growiは、オープンソースで公開されているWiki用のソフトウェアです。このGrowiではマークダウンを使うことができる他に図形の処理も容易で、さらにはTeXの数式も処理できるなど非常に多機能で便利なものです。

GitHubでは、weseek/growiとしてリポジトリーが公開されていて、現在のバージョンは2022年11月17日に公開されたv5.1.8となっています。

さらに、DockerHubでDockerコンテナーも公開されているのですが、現在プルできるバージョンのプラットフォームがLinux/x86_64となっています。3

$ docker pull weseek/growi:5.1.8
$ docker inspect --format='{{.Architecture}}' weseek/growi:5.1.8
"amd64"

またDockerコンテナーを作成してdocker-composeで動かすためのリポジトリーとして、weseek/growi-docker-composeが公開されています。

そこで、これらのリポジトリーを使ってRaspberry Pi 4で動かすことのできる「arm64」対応のDockerコンテナーを作成する方法もあるかとは思いますが、Dockerのマルチプラットフォーム機能とdocker-composeで対応されている「DOCKER_DEFAULT_PLATFORM」を利用して「無理やり」動かしてみることにします。

注1:昨日2022年12月20日にdocker-composeのv2.14.2が公開されました。機能拡張の一つとして、「DOCKER_DEFAULT_PLATFORM」をコンテナー作成時にも使用できるとなっています。

2:2023年1月6日に最新のGrowiを使用して「GrowiをRaspberry Pi 4で普通に動かす」という記事を掲載しています。マルチプラットフォーム機能を使うのではなく、ネイティブな環境で動かす場合には、そちらを参照して下さい。

3:2023年1月11日にGrowi v6.0.2が”linux/arm64″に対応したとのアナウンスがありました。現在では、普通にdocker pull weseek/growi:6.0.2を実行すれば入手することが出来ます。

Growiのdocker-composeでは、growiとmongoとelasticsearchを同時に動かしているのですが、mongoとelasticsearchは「arm64」対応版がありますので、これを利用します。つまりRaspberry Pi 4上で「Linux/x86_64」と「Linux/aarch64」のDockerコンテナーを同時に動かそうというものですから、「無理やり」としています。

前提となる準備

Raspberry Pi 4にDockerとdocker-composeをインストールしておきます。その上で、QEMUパッケージを追加インストールしてマルチプラットフォーム対応にします。Dockerは、buildxを有効にしています。

$ docker buildx ls
NAME/NODE DRIVER/ENDPOINT STATUS  BUILDKIT PLATFORMS
default * docker                           
  default default         running 20.10.22 linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/arm/v7, linux/arm/v6
$ cat /etc/docker/daemon.json
{
"features": { "buildkit": true }
}

参考Raspberry Piでlinux/amd64のDockerコンテナーを動かす

growi-dokcer-composeをクローンしてビルド

growi-docker-composeをGitHubからクローンします。

$ git clone https://github.com/weseek/growi-docker-compose.git

まずサービスappとしてgrowiをビルドするのですが、この際に「DOCKE_DEFAULT_PLATFORM=linux/amd64」を指定して実行しちゃいます。

$ env DOCKER_DEFAULT_PLATFORM=linux/amd64 docker compose build app

これでビルドしたDockerコンテナーは、アーキテクチャーが”amd64″となっています。

$ docker inspect --format='{{.Architecture}}' growi-docker-compose-app:latest
amd64

mongoは、そのままDockerHubからpullしておきます。

$ docker pull mongo:4.4

Elasticsearchは、そのままビルドしてarm64用のDockerコンテナーを作ります。

$ docker compose build elasticsearch

Growiを起動する

Growiを起動する前に、docker-compose.ymlのappサービスに”platform: linux/amd64″の行を追加します。また公開するポートが”127.0.0.1:3000:3000″としてローカルホストのみになっていますから、必要に応じて修正します。

準備ができたら、docker composeから起動します。

$ docker compose up

起動するまで、しばらく待ってからブラウザーでアクセスすると初期設定画面が表示されて無事に動いています。

Growiの初期設定画面

初期設定でアカウントを作成すれば、Growiを使用することが出来ます。

Growiの最初のページ

Dockerとdocker-composeでマルチプラットフォーム対応しているために、今までであればRaspberry Piでは動かせなかったようなアプリを動かすことも出来そうです。なんとなく逆向きの使い方のような気もしてはいるのですが…

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!
目次