elasticsearchがSIGILLで起動しない
M4 Mac miniを購入して嬉しく使っているのですが、そこで動かしているGrowiを7.1.6
にバージョンアップしようとしたところelasticsearch
がSIGILL
で起動しなくなってしまいました。
実際のログは、次のような内容です。
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGILL (0x4) at pc=0x0000ffff9034bb80, pid=7, tid=16
#
(以下略)
platformを使用してlinux/amd64アーキテクチャーで実行
どうしたものかということで、ChatGPTに尋ねたりしながら悩んでいたのですが思い切ってplatform
を導入してlinux/amd64
としてCPUアーキテクチャーをエミュレーションして実行することにしました。
今回は、Growiを動かすということでgrowi-docker-compose
を使っていますから、docker-compose.yml
ファイルのelasticsearch
にplatform: linux/amd64
の行を追加します。
elasticsearch:
build:
context: ./elasticsearch/v8
dockerfile: ./Dockerfile
platform: linux/amd64
environment:
elasticsearchのビルドと実行
この状態でelasticsearch
をビルドして起動します。
$ docker compose build elasticsearch
ビルドするとgrowi-docker-compose-elasticsearch
というDockerコンテナーが作成されています。
growiを起動します。
$ docker compose up -d
[+] Running 4/4
✔ Network growi-docker-compose_default Created 0.0s
✔ Container growi-docker-compose-mongo-1 Healthy 10.7s
✔ Container growi-docker-compose-elasticsearch-1 Healthy 20.7s
✔ Container growi-docker-compose-app-1 Started 20.7s
M4 Mac miniでは、20秒ほどで起動しています。
M1 Macbook Proや、Raspberry Pi 5、ARM64のクラウドインスタンスで実行した場合には、このようなエラーが発生していませんのでM4 Mac mini固有の問題のようではあります。
そう言えば、以前にもエミュレーションを使ってGrowiを動かしたことがありました。
参考: 2023/01/11 GrowiをRaspberry Pi 4で無理やり動かす