📦

M1 mac + laradockのapache2とMySQLエラー回避(おまけXdebug3設定)

2021/10/31に公開

M1 macでのlaradockの問題点

仕事で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

問題2 MySQLが起動しない

同様にMySQLも起動しません。
ネットで調べるといろいろ情報がありますが、自分の場合は下記の変更だけで起動しました。

方法

/mysql/Dockerfileを修正

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

おまけ

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_XDEBUGPHP_FPM_INSTALL_XDEBUGtrueに変更してください。

おまけ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

コンテナ停止

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

うまくいかない時

上記でも書きましたが、うまくいかない時は.envDATA_PATH_HOSTで指定しているディレクトリを一旦削除してから、buildすると直る場合があります。

Discussion