最初に
暇なのでLaradockで簡単に環境を作ってみたくなったが思ったより手こずった話
Laradockとは
Dockerを使ったLaravel環境を簡単に作れるもの
前提
macで自分はやっています。
gitとdockerが入っていること
作業
最初
作業用ディレクトリの作成
mkdir app
cd app
laradockを上で作成したディレクトリの入れる
git clone https://github.com/LaraDock/laradock.git
laradockの.envの内容を整える
cd laradock
cp env-example .env
起動させたいコンテナを起動させる(phpmyadminやredisとかお好みで)
docker-compose up -d nginx mysql redis beanstalkd phpmyadmin workspace
workspaceという作業ようコンテナに入る
docker exec -it laradock_workspace_1 bash
プロジェクトの作成 (sampleappはプロジェクト名でなんでもいいです。)
composer create-project "laravel/laravel=5.5.*" sampleapp
一旦ローカルのlaradockに戻りenvの修正
- APP_CODE_PATH_HOST=../
+ APP_CODE_PATH_HOST=../sampleapp
これで最低限の環境はできたはず
とかでlaravelの画面が出ればok
詰まったこと
migration使ってテーブル操作などしようとして
php artisan migrate
と打ったら
In Connection.php line 664:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = sampleapp and table_name = migrations)
In Connector.php line 67:
SQLSTATE[HY000] [2002] No such file or directory
結論から言うと下記の記事の通りやったら動いた。
やったこと1
mysql5.7に変更(もしかしたらこれはいらなかったかもしれないw)
イメージ、データ削除
docker rmi laradock_mysql
docker rm volume laradock_mysql
rm -rf ~/.lardock/data/mysql
laradock/.envのバージョンを5.7
に変更
MYSQL_VERSION=5.7
再ビルド
$ docker-compose build --no-cache mysql
やったこと2
laravelプロジェクトの.envファイルを下記のようにDB_HOST=mysqlとした(パスワード/userは参考のために適当に記述してるのでお好みで)
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=sampleapp
DB_USERNAME=root
DB_PASSWORD=root
これらをやったら動いた。
感想
簡単に環境構築できるのがlaradockの魅力だと思い触ってみたが想定外のとこで
詰まってしまった。
DB_HOSTがローカルホストのままでdockerコンテナのmysqlをさしてなかった。
ただ、それ以外はそんな大変ではなく簡単にdbから他のサービスまで含んで構築できるのでなかなかいいものではありそう。