LoginSignup
11
10

More than 5 years have passed since last update.

Laradockでプロジェクトを作ってphp artisan migrateするまで

Last updated at Posted at 2019-03-29

はじめに

Laradockとは?

Laravelを用いたサーバーをDockerで立てるためだけに集中してプロジェクトで、必要なコンテナ群と環境をまとめられています。便利。
公式サイト https://laradock.io/
nginxやmysqlはもちろん、php-worker等のように必要そうなコンテナが入っており、それぞれのバージョンなども一つの管理ファイルで行えるような仕組みになっています。すごい。

なお、私はLaradockではなくHomestead + Vagrantで開発を継続する方針に決めました。
深い理由はないのですが、結局のところ環境設定も多く必要になりそうなので、それであれば、一つの仮想マシンで丁寧にいじろうかなと思ったためです。

準備

環境について

Macbook Pro
macOS Sierra (ver10.12.6)

必要な物をインストール

何かしらの方法でDockerをインストールしなければなりません。
私の場合はHomebrewを使ったので、その手順を記します。

Homebrewを導入する

公式サイトに記述されているインストールコマンドを打ちます。
公式サイト https://brew.sh/

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Dockerをインストール

Homebrew-caskを用いてインストールします。

brew cask install docker

インストールが完了したら、一度Dockerを起動してください。
ツールバーのDockerをクリックした際に下の画像のように、
Docker Desktop is running
となるまで、表示される手順に従い進めてください。
Screen Shot 2019-03-29 at 13.02.23.png
ターミナルでdocker-composeコマンドが使えればOKです。

Laradockを入手

Laradockのgitリポジトリからクローンします。
私はホームディレクトリ以下にProjects/Webというフォルダを作って、そこにデータを格納しています。

cd Projects/Web
git clone https://github.com/laradock/laradock.git laradock

ここまでで、必要な物は揃ったはずです。

メインパート

laradockの.envファイルを用意する

クローンされたlaradockフォルダの中にはenv-exampleというファイルがあります。
laradockの環境設定を司るファイルなので、これをコピーして利用します

cd laradock
cp env-example .env

コピーしたファイルの頭にドット(.)がついていることに注意です。

workspaceにログインまでしてみる。

一旦起動して見ます。

docker-compose up -d nginx mysql workspace

... done
みたいなのがいっぱい出てくると思います。
ちゃんと起動しているか確認したいときは以下のコマンドを打ちましょう。ステータスが見られます。

docker-compose ps

起動確認ができたら、workspaceコンテナにbashでログインしてみます。

docker-compose exec --user=laradock workspace bash

下の感じに表示されればOKです。~は人によって違うと思います。多分。

laradock@~~~~: /var/www$

この/var/wwwは、デフォルトの.envの設定だとlaradockフォルダの一つ上の階層にマップされています。私の場合だと~/Projects/Webにあたります。

Laravelプロジェクトを作る。

/var/wwwで以下のコマンドを打ちます。プロジェクト名は一旦laravel-appとしています。
少し時間がかかると思うので休憩です。

composer create-project --prefer-dist laravel/laravel laravel-app

ここまでで、dockerで立ち上げた環境にlaravelのプロジェクトを用意するところまでできました。

nginxのルーティングを設定する。

上記までだと、http://localhost にアクセスしても404 not foundだと思います。
理由はnginxでのルーティングが正しく設定されていないためです。
設定のため、以下のコマンドで一旦コンテナを落とします。
まだworkspaceにログインしている場合は、exitと打つか、Ctrl+Dでログアウトします。

docker-compose down

設定ファイルは、laradock/nginx/sitesにあります。
laravel用のサンプル設定があるので、コピーして使いましょう。

cd nginx/sites
mv default.conf default.conf.bak
cp laravel.conf.example default.conf

コピーしただけでは、ルーティングができていないので、以下のように編集します。12~16行目あたりにあります。
"Laravelプロジェクトを作る。"で作成した名前laravel-appに変更します。

- root /var/www/laravel/public;
+ root /var/www/laravel-app/public;

ここまで設定できたら、一度コンテナをリビルドして、起動します。
--buildオプションをつけるだけで問題ないとはずです。

docker-compose up -d --build nginx mysql workspace

起動が完了したら
http://localhost
にアクセスして見てください。以下の画面が表示されれば、問題ありません。
Screen Shot 2019-03-29 at 14.09.59.png

php artisan migrateするまで

php artisan migrateするためには、workspaceコンテナからmysqlコンテナにアクセスしなければなりません。laradockはこの辺りを解決してくれているので、大きな変更は必要ありませんが、以下を設定する必要があります。
設定変更の前に、一旦dockerのコンテナを全て落としておきましょう。

docker-compose down

laravel-app/.envファイルの設定を変更

laravelのプロジェクトは.envファイルに設定が記載されているので、mysqlの接続先を変更する必要があります。laradockの.envではありません。注意してください。
デフォルトだと、DB設定は以下のようになっていると思います。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

以下のように変更します。

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

DB_HOSTはlaradockが接続先を解決してくれるはずなので、mysqlだけで問題ないです。
また、この設定はlaradock/.envの設定に基づいているので、必要があれば各自変更してください。
laravelの環境設定はここまでで完了です。

laradockのmysqlの設定

ネイティブ認証プラグインを利用するので、以下の設定を行います。
設定ファイルはlaradock/mysqlにあるmy.cnfです。
テキストエディタで開いて、一番下の行に

default_authentication_plugin=mysql_native_password

と追記します。

ここまでできたら、一度、mysqlコンテナをリビルドしておきましょう。
また、一部キャッシュの影響?でうまく設定が反映されない場合があるので、~/.laradock/data
を削除しておくことを推奨します。
私はここで詰まった経験があるので...

rm -rf ~/.laravel/data
docker-compose build mysql

ここまでで、mysqlの設定はできました。

php artisan migrateする

あとは各コンテナを起動してプロジェクトディレクトリでmigrateするだけです。
起動とログインをして、

docker-compose up -d nginx mysql workspace
docker-compose exec --user=laradock workspace bash

作成したプロジェクトディレクトリに移動し、migrateコマンドを実行。

cd laravel-app
php artisan migrate

これで完了です。

その他

今回データベース名などはlaradock準拠にしていますが、homesteadなどから移行した場合などは、laradockの設定を変えた方が都合が良い場合があると思います。
また、php-worker等を利用したい場合も、ある程度コンテナ間のコネクションはlaradockが吸収してくれますが、細かい設定は自分でする必要があると思うので、laradock/.envや、各コンテナの設定ファイルにはよく目を通しておいた方が良いと思います。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10