解决M1 Mac + Laradock的Apache2和MySQL错误(还附带Xdebug3配置)

Laradock在M1 Mac上的问题

我在工作中使用Laravel,并且在本地开发环境中使用laradock作为Intel Mac的解决方案。但是最近我切换到了M1 Mac,发现在laradock中出现了一些问题,因此我开始寻找解决方法。

问题1:Apache2无法启动。

首先,M1上的apache2容器无法启动。

途径

修改 /apache2/Dockerfile。

// 1行目を修正
FROM --platform=linux/x86_64 webdevops/apache:ubuntu-18.04

// 最後の行に下記を追加
RUN wget -O "/usr/local/bin/go-replace" "https://github.com/webdevops/goreplace/releases/download/1.1.2/gr-arm64-linux" \
    && chmod +x "/usr/local/bin/go-replace" \
    && "/usr/local/bin/go-replace" --version

顺便提一下,Nginx在M1芯片上也能正常运行。

问题2:MySQL无法启动。

MySQL同样无法启动。
在网络上搜索可以找到各种信息,但我自己只需进行以下更改就能启动。

解决方案

修改/mysql/Dockerfile文件

// 2行目を修正
FROM --platform=linux/x86_64 mysql:${MYSQL_VERSION}

如果无法启动,请删除.env文件中DATA_PATH_HOST指定的目录。

免费附赠

Xdebug3的配置设置

根据PHP的版本(如PHP8.0),将安装Xdebug的版本3,但是设置参数的名称已经从版本2更改,因此在PhpStorm中无法正常进行逐步调试。

解决方案

将下列内容添加到/php-fpm/xdebug.ini和/workspace/xdebug.ini的最后一行。

xdebug.client_host="host.docker.internal"
xdebug.discover_client_host=0
xdebug.client_port=9000
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.output_dir="~/xdebug/phpstorm/tmp/profiling"

请将.env文件中的WORKSPACE_INSTALL_XDEBUG和PHP_FPM_INSTALL_XDEBUG修改为true。

当在PhpStorm中进行逐步调试时,可能会出现与端口相关的警告,但我们仍然可以进行逐步调试。

额外的2

环境建设命令列表

容器构建

搭建LAMP、redis、phpmyadmin和redis-webui。

docker-compose build --no-cache apache2 php-fpm mysql workspace redis phpmyadmin redis-webui

容器启动

docker-compose up -d apache2 mysql workspace redis phpmyadmin redis-webui

当需要从服务器中执行Laravel命令或迁移时

docker-compose exec workspace bash

您可以像在服务器上使用ssh时那样进行操作。

停止容器

docker-compose stop

删除容器

docker-compose down

访问phpmyadmin(默认设置)

localhost:8081

サーバー:mysql
ユーザー:root
パスワード:root

访问Redis WebUI(默认设置)

localhost:9987

認証ID:laradock
認証PW:laradock

容器重建

在处理错误或更改PHP版本等需要重新构建容器时,我会先删除容器,然后重新构建。有时也可能可以更简化这个过程。

docker-compose down
docker-compose build --no-cache apache2 php-fpm mysql workspace redis phpmyadmin redis-webui
docker-compose up -d apache2 mysql workspace redis phpmyadmin redis-webui

当事情不顺利时

如我之前提到的,如果遇到问题无法解决,您可以尝试先删除指定的.env中的DATA_PATH_HOST目录,然后重新构建,有可能问题会得到解决。

广告
将在 10 秒后关闭
bannerAds