Laradockを利用した環境構築
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画面が表示されれば上手くいっています。
PhpStormでプロジェクトを作成する
次は、PhpStormでプロジェクトを作成してみます。
任意に作成したlaravel_dockerフォルダ配下にtestappのプロジェクトフォルダが作成されていて、
こちらのファイルは、Dockerのworkspace上のファイルと同期されています。
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を選択。
Test Connectionで Successfulが出たらOKです。
Author And Source
この問題について(Laradockを利用した環境構築), 我々は、より多くの情報をここで見つけました https://qiita.com/junpeko5/items/4d73a37782abaa75737e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .