Git
MySQL
nginx
laravel
LaraDock

既存プロジェクト(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でスーパーユーザになっておくと楽かもしれません

参考