カテゴリー
Linux

Laradock の Getting Started で Laravel 開発環境構築メモ

Laradock で編集必要な点まとめ

  • cp env-example .env すること
  • .env の、APP_CODE_PATH_HOST を編集すること

前提

次のアプリが使用可能なこと

  • Git
  • Docker
  • Composer

Laradock で環境構築したい Laravel プロジェクト概要

  • samplelaravel ディレクトリを作り、その中で作業する。
  • Laravel プロジェクト名を、SampleProject とする。
  • Laravel 5.4.36
  • MySQL 8.0.12

Laradock で環境構築するまでの記録

ポイント

  • Laradock で作業する前に、Laravel プロジェクトを作成しておく
  • laradock/.env で APP_CODE_PATH_HOST=../SampleProject/ と設定すると、その後の docker-compose up -d nginx mysql 時に samplelaravel ディレクトリに SampleProject ディレクトリが作成される。
# 作業場所の作成
cd samplelaravel/
mkdir samplelaravel

# Laravel プロジェクトの作成
composer create-project laravel/laravel SampleProject

# Laradock の導入
git clone https://github.com/laradock/laradock.git
cd laradock/

# Laradock 開発環境の設定
cp env-example .env
vim .env

laradock/.env の編集内容

APP_CODE_PATH_HOST=../SampleProject/
# MySQL 8 の設定
vim mysql/my.cnf 

次を [mysqld] の最後に追加しました。

参考ページ -> macでLaravelでmysql8を使う (mysql8の認証プラグインの変更) – Qiita

default-authentication-plugin = mysql_native_password
# Laradock 開発環境のビルド、起動
docker-compose up -d nginx mysql

ウェブブラウザから、http://localhost/ へアクセスし、Laravel のページが表示されれば成功

DB との接続を確認

ポイント

  • MySQL ユーザは、mysql_native_password で作成すること。PHP の PDO が caching_sha2_password に対応していないため、接続できなかった。
# MySQL コンテナに入る
docker exec -it laradock_mysql_1 bash
mysql -u root -proot
-- DB、ユーザを作成し、権限を付与
CREATE DATABASE IF NOT EXISTS sample_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER sample_user@localhost IDENTIFIED WITH mysql_native_password BY 'sample_user_pass';
GRANT ALL PRIVILEGES ON sample_db.* TO sample_user@localhost;
CREATE USER sample_user@'%' IDENTIFIED WITH mysql_native_password BY 'sample_user_pass';
GRANT ALL PRIVILEGES ON sample_db.* TO sample_user@'%';
quit
# MySQL コンテナから出る
exit

# Laravel プロジェクト設定を編集する
vim ../SampleProject/.env

次のようにしました。

DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=sample_db
DB_USERNAME=sample_user
DB_PASSWORD=sample_user_pass
# Laravel プロジェクト設定を編集する
vim ../SampleProject/.env

参考ページ -> Laravel5 MySQL8.0 NO_AUTO_CREATE_USERのSQL_MODEエラー対策 – Qiita

        'mysql' => [
... 略 ...
            'strict' => false,
... 略 ...
        ],
# Workspace コンテナに入る
docker-compose exec workspace bash
php artisan migrate

次のようになれば OK

root@3a034be6a28d:/var/www# php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
root@3a034be6a28d:/var/www# 

参考

大体は本家ページに従うことで、体験できました。

日本語の体験ページとしては、次が雰囲気を知るのに役立ちました。

おわりに

Laravel の環境を Docker で構築したいと思いました。

そのために、Laradock という、すでに同じような目的のものを見つけました。

このまま使うのか、参考にするのか、、、Laravel 自体もさわったことがありませんし、まずは素直に体験することにしました。

素直に従ったつもりでしたが、案の定、 Laradock のディレクトリ構成や、MySQL 8 設定の罠で時間を撮ってしまいました><。

以上です。

コメントを残す