はじめに
Laravelの環境を作る場合、以下の方法がある。
- 公式サイトの情報を元に、開発機にcomposerで環境を作る。
- VirtualBox + Vagrant + Homestead + Composer で仮想環境を作る。
- Docker + Laradock で仮想環境を作る。
できるだけ、実機の環境はいじりたくないので、仮想環境を作ってみる。2のほうが情報が多そうだが、Dockerは既に入れているので、3で試してみる。3のほうが、実機のディスク容量は食わなそうだし。
参考サイト
- https://liginc.co.jp/364089
- https://qiita.com/wasanx25/items/d47caf37b79e855af95f
- https://qiita.com/wajima/items/69fad6c2b42c52928e82
- https://qiita.com/YumaInaura/items/3432cc3f8a8553e05a6e
- https://qiita.com/shunichi_com/items/9b09c5949233b88b9a4a
1.いるもの
- Git
- Docker
- Node.js (フロントエンドのビルドをする場合)
いずれも、今回はインストール済み。
2.作業ディレクトリの用意
ホスト機に任意のディレクトリを作って、その下にLaradockを配置していく。
Docker関連のファイルは一式外付けHDDに出したので、その下に下記のような感じで作っていく。
/Volumes/forDocker/Docker
└─ myProject
├─── laradock
└─── src (ここにLaravel が配置される)
laradock をgit のサブモジュールとして使うので、下記のようにコマンド叩いていく。
$ mkdir myProject $ cd myProject $ git init $ mkdir src $ git submodule add https://github.com/Laradock/laradock.git
ここまで行くと、先述のようにディレクトリが構成される。
3.Laravelのインストール先の指定
git でクローンしてきた laradock ディレクトリに入り、環境設定ファイルを用意する、
$ cd laradock $ cp env-sample .env $ vi .env ---- ########################################################### ###################### General Setup ###################### ########################################################### # Point to the path of your applications code on your host APP_CODE_PATH_HOST=../src/ # /Volumes/forDocker/Docker/myProject/src にLaravelがインストールされるように # Choose storage path on your machine. For all storage systems DATA_PATH_HOST=~/.laradock/data ↓ DATA_PATH_HOST=/Volumes/forDocker/Docker/.laradock/data # ホームディレクトリの下になってるので変更
4.Docker コンテナの起動
$ docker-compose up -d nginx mysql
結構時間がかかります。
5.Laravel のインストール
コンテナが起動したら、workspaceのコンテナに入り、Laravel をインストールしていく。
* もし、workspace が起動してなければ $ docker-compose up -d workspace $ docker-compose exec workspace bash # composer create-project --prefer-dist laravel/laravel ./
しばらく時間がかかって、インストール完了したら、ブラウザからlocalhost にアクセスしてみる。
workspaceからMySQLに接続できるか確認するために、以下コマンドを実行するが、エラー。
# php artisan migrate Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = default and table_name = migrations)
どうも、MySQLのlatestのイメージを使ったので、認証方法が変更になっていてエラーになっているらしい。
MySQLのコンテナに接続して、認証方法を確認してみる。
$ docker-compose exec mysql bash # mysql -u root -p mysql> select user, host, plugin from mysql.user; +------------------+-----------+-----------------------+ | user | host | plugin | +------------------+-----------+-----------------------+ | default | % | caching_sha2_password | | root | % | caching_sha2_password | | mysql.infoschema | localhost | caching_sha2_password | | mysql.session | localhost | caching_sha2_password | | mysql.sys | localhost | caching_sha2_password | | root | localhost | caching_sha2_password | +------------------+-----------+-----------------------+ 6 rows in set (0.00 sec) mysql> alter user 'default'@'%' identified with mysql_native_password by 'secret'; mysql> exit; # mysql:latest のコンテナにviが入っていなかったので以下実行。 # apt-get update # apt-get install vim # vi /etc/mysql/conf.d/my.cnf ---- [mysqld] default_authentication_plugin= mysql_native_password # 追加 ----
で、上記のように変更してから、artisan migrate すると上手くいった。