要在Apple Silicon上使用Docker运行Bitnami的WordPress镜像
基本上跟 https://hub.docker.com/r/bitnami/wordpress 的資訊一樣去執行就好了,但按照這裡提供的 docker-compose.yml 檔案在 Apple Silicon 上無法正常運作。
根本原因是沒有針對 arm64 的映像檔(image)。
因此,為了解決這個問題,我們執行了以下三個步驟。
-
- 安装了Rosetta2
-
- 在官方的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 镜像了。只需按照官方说明进行卷的设置等,就可以了。