Edited at

既存プロジェクト(Vagrant+Homestead)のLaradock環境設定方法とMySQLの設定


目的

Vagrant+Homestead環境を利用して作成されたlaravelプロジェクトを

Laradock環境へ変更する。

その際、プロジェクト固有の環境を構築する。


前提条件


  • virtualbox+ubuntu環境が構築されている事

  • githubに既存プロジェクトがpushされている事

  • dockerがインストールされている事

  • 今回はmacを利用しますが、windowsでもほぼ同じ手順で構築できると思います

  • 既存プロジェクト名を「myApp」、リポジトリを「myRepository」とします


実施


myAppをcloneする

$ git clone https://github.com/myRepository/myApp


myApp内に、laradockをサブモジュールとして追加する

$ cd myApp

$ git submodule add https://github.com/Laradock/laradock.git

ディレクトリ構成としては

-myApp

-app
-nginx
-その他色々
-laradock

となります


laradockディレクトリに移動し
env.exampleをコピーし.envファイルを作り編集する

$ ch laradock

$ cp env.example .env


.env

// ... 略

# Apatchのポートと被っているので変更する
- NGINX_HOST_HTTP_PORT=80
+ NGINX_HOST_HTTP_PORT=8888

// ... 略

# homesteadの設定をそのまま使いたいので変更する
- MYSQL_DATABASE=default
- MYSQL_USER=default
- MYSQL_PASSWORD=root

+ MYSQL_DATABASE=homestead
+ MYSQL_USER=homestead
+ MYSQL_PASSWORD=secret

// ... 略


homesteadの設定から変えてもいいのですが、できるだけ楽に使いたいので。


MySQLのセキュリティ設定をmy.cnfに追記する

$ cd mysql


my.cnf

# 下記の行を追記

[mysqld]
+ default_authentication_plugin=mysql_native_password


dockerコンテナの立ち上げと接続確認

$ cd ../  # laradockへ移動

$ docker-compose up -d nginx mysql

ここでブラウザで画面を立ち上げると

404 not found nginx

と表示されます。

これによって「nginx」が正常に起動している事が確認できます。

$ docker-compose ps

起動プロセスを確認すると、nginx、mysql以外に

php-fpm、workspace型ちあがっています。(この2つは自動で立ち上がります)

補足1:ブラウザ表示アドレス例

・ Mac:192.168.56.101:8888/

・ ubuntu:localhost:8888/

補足2:ブラウザ表示読み出し箇所

$ cd /laravel/nginx/sites/default.conf


default.conf

# ブラウザ表示箇所

root /var/www/public;


workspaceの構成確認

$ docker-compose exec workspace bash

ディレクトリ構成は以下の通り


/var/www

# ls

# app public その他色々 laradock


myAppの設定

# exit    // コンテナを抜ける

$ cd ../ # myAppフォルダへ移動

# プロジェクトによってまちまちですが、

# 今回は.env.localに以前の設定が残されているのでそれをコピーして利用します
$ cp .env.local .env
$ composer install
$ php artisan key:generate
$ chmod -R 777 storage/ # 権限変更しておかないと、起動時にlogファイルアクセスエラーとなります


MySQLの設定

$ cd laradock                      # laradockフォルダへ移動

$ docker-compose exec mysql bash # mysql立ち上げ
# mysql -u root -p // rootで接続

/* DB作成、User作成、DBへの権限設定 */

> CREATE DATABASE homestead;
> CREATE USER homestead@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
> GRANT ALL PRIVILEGES ON homestead.* TO homestead@'%' WITH GRANT OPTION;

/* DBとUserが既に存在ている場合はこちら:権限設定 */
> ALTER USER homesteat@'%' IDENTIFIED WITH mysql_native_password BY 'secret';

> quit;

# exit


docker再起動

不要かもしれませんが念のため

$ docker-compose stop

$ docker-compose up -d nginx mysql


マイグレーション

$ docker-compose exec workspace bash

# php artisan migrate:install

# php artisan migrate
# locale-gen ja_JP.UTF-8
# exit


表示確認

ブラウザで画面を起動すると、プロジェクトが起動されるはずです。


tips


  • myAppの設定は、マイグレーションの直前に行った方がスムーズかもしれません

  • ubuntuを利用しているため、コマンドにはsudoが必要となります

  • sudo -sでスーパーユーザになっておくと楽かもしれません


参考