LoginSignup
3
3

More than 5 years have passed since last update.

Laradockを利用した環境構築

Last updated at Posted at 2018-11-20

Laradockとは?

LaradockはオープンソースのLaravel開発環境でDocker上で動作するものです。

VirtualBoxと比較して、高速に起動・停止することができるというメリットがあります。

前提条件

  • Dockerがインストールされていること
  • Gitがインストールされていること

また、今回は以下のDockerイメージを利用します。

  • nginx(webサーバ)
  • php-fpm(PHPの実行環境)
  • MySQL(データベース)
  • workspace(Laravelの開発環境がまとまっているもの)
  • phpMyAdmin(DBクライアント)

Laradockのダウンロード

$ cd
$ mkdir laravel_docker
$ git clone https://github.com/Laradock/laradock.git

作成したディレクトリ配下にlaradockが作成されます。

.envファイルの設定

.envで設定した値が、Docker起動時の設定ファイルdocker-compose.ymlに変数として使われているため、
.envファイルをコピーして編集します。

$ cd laradock
$ cp env-example .env

MySQLのバージョンは5.7に変更しました。なぜかlatestでは上手くいきませんでした。
.envを編集します。

### MYSQL #################################################

MYSQL_VERSION=5.7
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

docker-compose upでコンテナを起動する

docker-compose.ymlで定義した内容でサービスを開始します。
初回起動時はダウンロードしてくるためかなりの時間を要します。
2回目以降は数秒で起動しますね。

$ docker-compose up -d nginx mysql workspace phpmyadmin

完了すると、コンテナは起動状態となります。
docker psコマンドで確認すると、STATUSがUpとなっているでしょう。

Laravelプロジェクトの作成

Laravelプロジェクトはworkspace上で作成するので、workspaceのコンテナの中に入ります。

$ docker-compose exec --user=laradock workspace bash

今回はLaravelのバージョンは5.5とします。
testappの部分は任意のプロジェクト名を設定してください。

$ composer create-project laravel/laravel testapp --prefer-dist "5.5.*"

作成が完了したら、laradockディレクトリの.envファイルを書き換えます。

APP_CODE_PATH_HOST=../testapp

設定の変更を反映させるために、コンテナを再起動します。

$ docker-compose stop
$ docker-compose up -d nginx mysql

再起動後に、ブラウザで
http://localhost
にアクセスして、Laravelのwelcome画面が表示されれば上手くいっています。

2018-11-21 0.31のイメージ.jpg

PhpStormでプロジェクトを作成する

次は、PhpStormでプロジェクトを作成してみます。
任意に作成したlaravel_dockerフォルダ配下にtestappのプロジェクトフォルダが作成されていて、
こちらのファイルは、Dockerのworkspace上のファイルと同期されています。

2018-11-21 0.11のイメージ.jpg

Locationの項目は、testappのフォルダを選択すればおっけいです。

また、Filter packagesでlaravel/laravelを選択して、Createします。

migrationを行う

表示はできたので、次は、マイグレーションを行ってみます。

Laravelにはプロジェクト作成時に、/database/migrations/配下にユーザー認証用のマイグレーションファイルがあるので、workspaceに入り、コマンドを実行します。

$ docker-compose exec --user=laradock workspace bash
$ php artisan migrate

In Connection.php line 664:
SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = myapp and table_name = migrations) 

ここで、僕はこういったエラーが出ました。
DBの接続に失敗しています。
下記の記事に書かれていたのですが、
MySQLのバージョンがlatestの場合に上手くいかないことがあるそうです。

一度データベースを作成してしまうと、初期化されないようなので、下記のコマンドで一度mysqlのイメージを入れ直すことで上手くいきました。

$ docker-compose down
$ rm -rf ~/.laradock/data/mysql
$ docker rmi laradock_mysql -f
$ docker rmi mysql -f
$ docker-compose build mysql

再起動後にもう一度マイグレーションを実行します。

$ docker-compose exec --user=laradock workspace bash
laradock@d2d62adadd06:/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

今度は上手くいきました。

データベースに接続する

Laravelのデータベース設定は/config/database.phpに書かれていますが、変数はlaravelプロジェクト配下の.envファイルに書きます。

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

このような感じで設定すると良いと思います。

Data Sources and Driversのウィンドウを開き、MySQLを選択。

.envで設定した値を入れます。
2018-11-21 0.22のイメージ.jpg

Test Connectionで Successfulが出たらOKです。

3
3
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
3
3