Docker環境のMySQLは、コマンドで確認しないといけないため、初学者にとってとても大変。。
phpMyAdmin
を使用するとデータベース内がブラウザで確認、変更、削除ができるため重宝します。
phpMyAdmin
は、MAMP
やXAMPP
だけしか利用できないかと思っていましたがDocker環境でも利用できるようです。
laradock
を導入した基本フォルダ構成は、以下のようになります。
laravel_projects #laradockとlaravelプロジェクトをまとめるフォルダ
├── laradock # laradockをインストール
└── project # laravelをインストール
###早速、環境構築していきましょう!
今回は、以下のディレクトリで作成します。
laravel-docker
├── laradock
└── laravelDev
ワークディレクトリを作成します。
#まとめるフォルダを作成
$ mkdir laravel-docker
#作成したフォルダに移動
$ cd laravel-docker
#laradockをインストール
$ git clone https://github.com/LaraDock/laradock.git
laradockの設定に関わるファイルのひとつである、.env
ファイルを作成します。
laradockのenv-example
ファイルを.env
に変更して作成します。
#laradockフォルダに移動
$ cd laradock
#env-exampleをコピーして 名前を.envへ変更
$ cp env-example .env
laradockフォルダをエディタで開いて.env
ファイルを編集します。
APP_CODE_PATH_HOST=../
DATA_PATH_HOST=~/.laradock/data
COMPOSE_PROJECT_NAME=laradock
APP_CODE_PATH_HOST=../laravelDev
DATA_PATH_HOST=./laradock/data
COMPOSE_PROJECT_NAME=laravel-docker
APP_CODE_PATH_HOSTの変更
アプリケーションのディレクトリを指定します。 laravelをインストールするディレクトリです。
DATA_PATH_HOSTの変更
デフォルトではデータベースなどがホームディレクトリへ保存されます。
それをプロジェクトディレクトリ下へ変更します。
COMPOSE_PROJECT_NAMEの変更
デフォルトで$ docker-compose upすると、laradock_***という名称のコンテナが起動します。
上記工程で、プロジェクトのディレクトリは分けていますが、そのまま$ docker-compose upすると、
既存プロジェクトのコンテナが(同じ名称のコンテナが)立ち上がってしまうことを避けるために
COMPOSE_PROJECT_NAME をlaradockからlaravel-dockerへ変更します。
phpMyAdmin
を使うために続けてlaradock
の.env
を編集します。
### MYSQL #################################################
MYSQL_VERSION=latest
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
### REDIS #################################################
### MYSQL #################################################
MYSQL_VERSION=5.7 #編集
MYSQL_DATABASE=laravelDev #編集
MYSQL_USER=root #編集
MYSQL_PASSWORD=root #編集
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root #編集
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
### REDIS #################################################
### PHP MY ADMIN ##########################################
# Accepted values: mariadb - mysql
PMA_DB_ENGINE=mysql
# Credentials/Port:
PMA_USER=default
PMA_PASSWORD=secret
PMA_ROOT_PASSWORD=secret
PMA_PORT=8080
### MAILDEV ###############################################
### PHP MY ADMIN ##########################################
# Accepted values: mariadb - mysql
PMA_DB_ENGINE=mysql
# Credentials/Port:
PMA_USER=root #編集
PMA_PASSWORD=root #編集
PMA_ROOT_PASSWORD=root #編集
PMA_PORT=8080 #8080を使用していたら8081などに編集
### MAILDEV ###############################################
##コンテナ作成、起動
docker-composeコマンドでnginx、mysql、workspace、phpmyadminの作成と起動をします。
$ docker-compose up -d nginx mysql workspace phpmyadmin
※エラーが出てもコマンドを2、3回繰り返すと解決することがあります。
起動しているか確認します。
#Stateが全部Upになっているか確認
$ docker-compose ps
##Laravel プロジェクトの作成
作業は、workspace
コンテナの中に入って行います。
デフォルトではコンテナの中に入ると root
ユーザーになるが、composer を root
ユーザーで実行しようとすると警告が表示されてしまうため、--user
オプションを laradock
で指定してログインする。
#workspace コンテナの中に入ります。
$ docker-compose exec --user=laradock workspace bash
#Laravel プロジェクトを作成
# ※APP_CODE_PATH_HOST=../laravelDevをしているためアプリ名は,ドット . です
/var/www$ composer create-project --prefer-dist laravel/laravel . "6.0"
ブラウザでhttp://localhost
にアクセスしてLaravelのトップ画面が表示されれば成功です!
http://localhost:8080
のphpMyAdmin
にアクセスできることを確認します。
※PMA_PORTを8081
に変更していればhttp://localhost:8081
になりますのでご注意ください。
ログインは、.env
で設定したユーザ名, パスワードを使います。
サーバ:mysql
ユーザ名:root
パスワード:root
ログインできれば成功です!
##Laravel MySQL接続設定
laravelDev
をエディタで開き.env
を編集します。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
DB_CONNECTION=mysql
DB_HOST=mysql #編集
DB_PORT=3306
DB_DATABASE=laravelDev #編集
DB_USERNAME=root
DB_PASSWORD=root #編集
/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
phpMyAdmin
にアクセスして確認してみましょう。
##ログイン、登録機能のUI追加
/var/www$ composer require laravel/ui
Your requirements could not be resolved to an installable set of packages.
・
・
・
Installation failed, reverting ./composer.json to its original ,content.
エラーが発生しましたので、バージョンをつけてみましょう。
/var/www$ composer require laravel/ui:2.*
Your requirements could not be resolved to an installable set of packages.
・
・
・
Installation failed, reverting ./composer.json to its original ,content.
バージョンを下げてみましょう。
/var/www$ composer require laravel/ui:1.*
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing laravel/ui (v1.2.0): Downloading (100%)
・
・
・
v1.2.0でインストールできました!
/var/www$ php artisan ui vue --auth
/var/www$ npm install && npm run dev
ERROR in ./resources/sass/app.scss
sassのコンパイルがうまくいかないようです。
npmで管理しているsass-loader
のパッケージのバージョン表示してみましょう。
/var/www$ npm info sass-loader versions
現在インストールされているバージョンがv8.0.0
です。 ※環境によって違います。
"sass-loader": "^8.0.0",
バージョンを下げてみましょう。
#先にアンインストールをします。
/var/www$ npm uninstall --save-dev sass-loader
#先ほど確認したバージョンの中から前よりバージョンが低いsass-loaderをインストール
/var/www$ npm install --save-dev sass-loader@7.3.1
#コンパイル
/var/www$ npm run dev
うまくいきました!
http://localhost
にアクセスしてLaravelのトップ画面の右上にlogin
register
が表示されれば成功です!
##※MySQL8.0以降を使用する際は、認証方法の設定しないといけません。
MYSQL_VERSION=5.7
に変更しましたが
MYSQL_VERSION=latest
(8.0以降)を使用する際は、
laradockのmysql/my.cnf
に追加記述が必要です。
[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
character-set-server=utf8
default-authentication-plugin=mysql_native_password #追加
アカウントを認証できるようになったので、MySQL8.0のバージョンでも問題ありません。
以上、参考になったら幸いです。
参考にさせて頂いた記事
Laradockを使ってLaravelを動かすまで
https://qiita.com/ichimura/items/27d4a628ff22e2ba8b35
【初心者】Laradockで別のプロジェクト(コンテナ)を立ち上げる場合
https://qiita.com/tomokei5634/items/74c7734701fff8b99904