解决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目录,然后重新构建,有可能问题会得到解决。