はじめに
laravel開発環境(nginx、laravel、mysql、phpmyadmin)をdockerとdocker-composeで作ってみた。かなり創造性に溢れた?構成になっているので、異論は認める。
豆知識
LAMP環境のapacheがnginxになったらLEMPになるらしい。読み方が「エンジンエックス」だからEになるっていう説が濃厚
今回作成する開発環境
PHP:7.2.30 Laravel:7.9.2 nginx:latest mysql:latest phpmyadmin:latest用意する環境
docker:19.03.8 docker-compose:1.25.4 composer:1.9.3→入れとくと便利リポジトリ
https://github.com/atsugitakuya/docker_laravel_for_develop使い方
①git cloneしリポジトリをローカルにクローンする②「/sh」に移動し、以下のコマンドを実行する
$sh setup.sh
③「/」に移動し、以下のコマンドを実行する
$docker-compose up -d
④以下のメッセージが出力されたことを確認する
.......
Creating laravel ... done
Creating nginx ... done
Creating mysql ... done
Creating phpmyadmin ... done
⑤以下に接続し、それぞれ画面が正しく表示されることを確認する。
laravel
⑥(必要であれば)migrationの実行
以下のコマンドを順番に実行していく。
$docker exec -i -t laravel bash
$php artisan migrate
$exit
詰まったことリスト
詰まった事1
**laravelとmysqlのコンテナ間通信に失敗する** このリポジトリではないが、laravelからmysqlに接続しようとする(sql実行しようとすると)とconnection refusedが出た。php artisan migrateでlaravelで定義されているmigrationファイル通りにmysqlにもテーブル作成されているのに、なぜか画面起点のときに接続できなかった。原因
接続先IP(サービス)の設定ミス。
laravelの「.env」でmysql接続先IPをlocalhostにしていたが、これはlaravelコンテナ内localhost見ていることになる。コンテナが別なので、これでは接続できるはずがない。以下のように変更したら接続できた。
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
php artisan migrateが実行できたのは、(laravelコンテナ外の)ローカルPCのlocalhost:3306がmysqlコンテナに向いていたからっぽい。ちゃんとコンテナ入って実行してれば、よくわからない詰まり方をしなかったのになぁ、と反省。
詰まった事2
**composerのinstallが失敗する** laravel用のDockerfileビルド時、Composerをinstallするのだが、記事で紹介されているコマンドを真似しているのに、インストール自体が失敗してしまう。謎すぎる。原因
Composerのinstall方法が複数あり、その中でも最低の物をチョイスしていたらしい。
Qiitaにベストプラクティスを紹介してくれている記事がある。これをコピペしたらインストール成功した。ありがたや...
なんだかんだ、業後の時間を使って2日でできた。
laravelは今後も使いたい?し、dockerの理解も少し深まったので良しとしよう。
以上!!!!