こんにちは。どんぶラッコです。
今回は、せっかくの機会なので、Laradockを使ってLaravelの環境を構築するまでの手順をまとめてみました!
前提として、Dockerがインストールされている事が条件です
Laradockを導入する
以前にもQiitaでまとめました。
【2019年2月】Laradockの初期環境設定方法
あとは公式ページ( https://laradock.io/getting-started/ ) を読んでおけば何も問題はありませんが、改めて重要な部分だけを抜粋。
1. git clone
します
git clone https://github.com/laradock/laradock.git
laradock/
というディレクトリが丸っとダウンロードされます。
2. 環境設定ファイル .env
を作ります
cd laradock
cp env-example .env # Laradockの環境を設定します
2-1. (オプション) .env
ファイルの編集
※もし、プロジェクト毎に新しいlaradock環境を作りたい場合は、下記の変数をユニークなものに変更しておいてください
# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have seperate containers per project.
COMPOSE_PROJECT_NAME=laradock-sample # デフォルトではlaradockです
また、データの保存先をlaradock毎に分離したい場合は DATA_PATH_HOST
を書き換えておきます。
# DATA_PATH_HOST=~/.laradock/data
DATA_PATH_HOST=.laradock/data
参照: https://qiita.com/tomokei5634/items/74c7734701fff8b99904
3. APP_CODE_PATH_HOST を編集する
引き続き.env
ファイルの中にある APP_CODE_PATH_HOST
の値を ../{作成したいLaravelプロジェクト名}
に変更します。そうすることで、アプリケーションのディレクトリがどこにあるのか、指定できます。今回は app
にしておきます。
# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../app/
そして、ディレクトリを作成しておきましょう。
mkdir app
4. docker-composeでコンテナを立ち上げます
nginxとmysqlしか使わないので、ひとまずこの2つを立ち上げます。
docker-compose up -d nginx mysql
初回起動時は時間がかかります
5. Laradock環境に入る
rootユーザで入ると怒られるのでlaradock
ユーザで入ること
docker-compose exec --user=laradock workspace bash
下記のような表示になれば成功
laradock@e7b9098b1c92:/var/www#
6. Laravel一式をダウンロードしてくる
今回は app
というディレクトリ名にした。名前は好きなものでOKです
laradock@91eb494946ac:/var/www# composer create-project laravel/laravel ./
数分かかるので気長に待ちます。
7. 表示確認
http://localhost にアクセスしてLaravelの画面が表示されていればOK
8. Laravelの.env
ファイルを編集する
※先ほど編集した.env
ファイルはLaradockのもの!今回はLaravelの.env
ファイルを編集!!
DB_HOST=mysql # 127.0.0.1 から変更
DB_DATABASE=default # laravel から変更
DB_USERNAME=default # root から変更
DB_PASSWORD=secret
8-1. データベース接続確認をする
もう一回Docker環境に入ってmigration処理をした時に、
コマンドが通れば成功です
docker-compose exec workspace bash
エラーへの対処
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
php artisan migrate
をした時に下記のエラーが発生することがあります。
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 and table_type = 'BASE TABLE')
これはMySQL8.0になり、認証方式が変更になったことに起因するそうです。
解決法方はFendo181さんのIssueが参考になります。
まずは、mysqlコンテナに入り、
docker-compose exec mysql bash
MySQLにログインします。
mysql -root -p
# パスワードは root
そして、以下のコマンドを実行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'secret';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
これで解決します。
[…] 【2020年3月 更新】LaradockでLaravelを構築するまでの全手順【必見】 こんにち… […]