Posted at

Laradockでの環境作成と詰まったこと


最初に

暇なので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

これで最低限の環境はできたはず

http://localhost/

とかで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

結論から言うと下記の記事の通りやったら動いた。

LaradockのMySQLに接続できなくてはまった話


やったこと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から他のサービスまで含んで構築できるのでなかなかいいものではありそう。