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
ちなみに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
で指定しているディレクトリを一旦削除してから、build
すると直る場合があります。