要在Apple Silicon上使用Docker运行Bitnami的WordPress镜像

基本上跟 https://hub.docker.com/r/bitnami/wordpress 的資訊一樣去執行就好了,但按照這裡提供的 docker-compose.yml 檔案在 Apple Silicon 上無法正常運作。
根本原因是沒有針對 arm64 的映像檔(image)。
因此,為了解決這個問題,我們執行了以下三個步驟。

    1. 安装了Rosetta2

 

    1. 在官方的docker-compose.yml上使用platform来明确指定amd64

 

    为apache设置了Mutex posixsem

安装Rosetta2

 

根据这里的说明,从Docker Desktop 4.3.0版本开始,Rosetta2不再是安装要求之一。
然而,考虑到可能有一些软件仍然需要它才能正常运行,建议为了保险起见还是安装上它。

$ softwareupdate --install-rosetta

在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

即使以当前状态执行第二行的 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 中配置互斥锁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 镜像了。只需按照官方说明进行卷的设置等,就可以了。