基本的には https://hub.docker.com/r/bitnami/wordpress の情報通りにやればいいのだけれど、ここに書いてある docker-compose.yml 通りだと Apple Silicon では上手くいかなかった。
根本原因は arm64 用のイメージが用意されていないことである。
なので、これを解決するために以下の3つのことを行なった。
- Rosetta2 をインストールした
- 公式のdocker-compose.yml上に platform を用いて amd64 を明示した
- apache に
Mutex posixsem
を設定する
1. Rosetta2 をインストールする
こちらにある通り、Docker Desktop 4.3.0 からはインストール要件から Rosetta2 が外れている。
が、これがないと動かないものもあると思われるため、念の為インストールしておく。
$ softwareupdate --install-rosetta
2. docker-compose.yml に amd64 を明示する
bitnami の wordpress イメージは以下のコマンドでインストールする。
$ curl -sSL https://raw.githubusercontent.com/bitnami/containers/main/bitnami/wordpress/docker-compose.yml > docker-compose.yml
$ docker-compose up -d
今のままで2行目の docker-compose up -d
コマンドを実行しても、
mariadb The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
wordpress The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
というメッセージが出てくる。
これを出ないようにするには、 docker-compose.yml の mariadb と wordpress に、以下の行を追加する。
mariadb:
image: docker.io/bitnami/mariadb:10.6
+ platform: linux/amd64
wordpress:
image: docker.io/bitnami/wordpress:6
+ platform: linux/amd64
こうすると、上記のメッセージが出てこなくなる。
3. apache に Mutex posixsem を設定する
2までの処理を行なっても、実は wordpress の方は起動後にエラーでコンテナが落ちてしまい、正常に起動しない。
$ docker compose logs wordpress
でログを見てみると、
wordpress 06:34:57.50 INFO ==> ** Starting Apache **
[Wed Jan 04 06:34:57.621748 2023] [core:emerg] [pid 1] (95)Operation not supported: AH00023: Couldn't create the mpm-accept mutex
(95)Operation not supported: could not create accept mutex
AH00015: Unable to open logs
というエラーを最後にコンテナが落ちている。
この Operation not supported: could not create accept mutex
でググると、最初に出てくるのが次のページである。
https://github.com/bitnami/bitnami-docker-wordpress/issues/316
ここにあるように apache2 の設定に Mutex posixsem
を付け加えれば良い。
そのためには、Dockerfile の RUN コマンドを用いる。
なので、次の Dockerfile を追加し、更に docker-compose.yml を次のように変更する。
FROM --platform=linux/amd64 bitnami/wordpress:6
RUN echo 'Mutex posixsem' >>/opt/bitnami/apache2/conf/httpd.conf
wordpress:
- image: docker.io/bitnami/wordpress:6
+ build: .
これで Apple Silicon 上の Docker で bitnami の wordpress イメージが動くようになった。
あとは公式の説明にある volumes の設定などを忘れずに行うといいだろう。