こんにちは、エリカです。
今回は、PHP フレームワーク「 Laravel 」を利用するための環境を構築したいと思います。Laravelでは PHP の組み込み開発サーバを手軽に使用することもできますし、Vagrant を利用した” Laravel Homestead “、PHP とデータベースサーバを直接ローカルマシンにインストールして利用する” Valet “と、さまざまな選択肢が用意されています。仮想化という観点からですと、Vagrant を普段使いされている方には” Laravel Homestead “を利用するのがもっともカンタンです。
上記の 3 つについては公式のドキュメントにすべて記載されてありますが、” Docker “を利用した方法については まだ記載がありません。
そこで今回は、Laradock を使って、” Docker + Laravel “な開発環境の構築方法についてご紹介したいと思います。
目次
必要なもの
- Git
- Docker
- Node(フロントエンドのビルドも行う場合)
作業ディレクトリの用意
まず任意のディレクトリを作成し、そこに” Laradock “を配置することにします。 最終的に下記のような構成にしていきます。
/MyProject
├── laradock
└── src ... (ここにLaravelが配置される)
まずはメインのディレクトリを作成します。
$ mkdir MyProject && cd MyProject
Laradock をサブモジュールとして扱うために、git を利用できるようしておきます。
$ git init
次に” Laravel “が配置されるディレクトリを用意しておきます。
$ mkdir src
ここまでできたら” Laradock “を準備します。
Laradockの準備
” Laradock “をサブモジュールとしてクローンします。
$ git submodule add https://github.com/Laradock/laradock.git
これで、先ほどのディレクトリ構成と同じ状態になります。
/MyProject
├── laradock
└── src
Laravelのインストール先の指定
クローンした laradock ディレクトリに入ります。
$ cd laradock
環境設定サンプルファイルから環境設定ファイルを作成します。
$ cp env-sample .env
.env
ファイルを編集します。
############################
# General Setup
############################
### Application Path
# Point to your application code, will be available at `/var/www`.
APPLICATION=../src/
APPLICATION
に、先ほど作成した src
ディレクトリを” Laravel “のインストール先に指定しておきます。
Dockerコンテナの起動
Nginx と MySQL コンテナを起動します。
$ docker-compose up -d nginx mysql
問題なく起動したら http://localhost
へアクセスします。
まだ Nginx の 404 ページが表示されていますが、ここに” Laravel “がインストールされることになります。
Workspaceコンテナへの接続
起動しているコンテナを確認します。
$ docker ps
nginx
コンテナが依存する形で workspace
というコンテナが起動しているはずです。
もし起動していなければ、直接起動します。
$ docker-compose up -d workspace
workspace
コンテナに接続します。
$ docker-compose exec workspace bash
workspace
コンテナでは composer
をはじめ、開発に必要な多くのコマンドが利用できる状態になっています。
Laravelのインストール
カレントディレクトリが (/var/www) になっているはずなので、そこで composer
を使って laravel
をインストールします。
$ composer create-project --prefer-dist laravel/laravel ./
再度、http://localhost
へアクセスし、Laravel
の初期ページが表示されていれば成功です。
この時点で、大元の src
ディレクトリ以下に laravel がインストールされているのが確認できるかと思います。 ちなみに、先ほどのページは src/public/index.php
が呼び出されたことによって表示されています。これは、nginx
のルートディレクトリが /var/www/public
にあらかじめ設定されているためです。
MySQLへの接続設定
次に MySQL へ接続できるようにしておきます。
src/.env
の接頭辞が DB_
の部分を編集します。これらは、laradock/.env
に記述されているそれぞれの値に合わせる形になります。
src/.env (変更前)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
src/.env (変更後)
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
PhpMyAdminへの接続
お好きなクライアントソフトから接続できますし、PhpMyAdmin の用意もカンタンです。
laradock
ディレクトリから phpmyadmin
コンテナを起動します。
$ docker-compose up -d phpmyadmin
起動したら、http://localhost:8080
へアクセスします。
この接続情報やポート番号もすべて laradock/.env
に記載されています。
artisanコマンドを使う
artisan
コマンドを使って、” Laravel “がデータベースへ接続できるか確認してみます。
再び workspace
コンテナに入り、artisan
コマンドを叩きます。
$ docker-compose exec workspace bash
Laravel には、認証用にデフォルトでテーブル定義が用意されていますので、それを作成してみます。
$ php artisan migrate
データベースへの接続が問題なければ、マイグレーション情報を格納する migrations
テーブルをはじめ、いくつかのテーブルが作成されているのが確認できると思います。
Frontendのビルド環境の準備
これは” Docker “および” Laradock “とは直接関係ありませんが、” Laravel “の開発環境という意味で、フロントエンドのビルドもできるようにしておきます。
まずは、src/
ディレクトリで、必要なパッケージをインストールします。
$ npm install
ビルドに必要な各種パッケージがインストールされたかと思います。
ビルドの実行
$ npm run watch
必要なパッケージのインストールが行われていれば、css および js のビルドが行われます。
初期状態であれば、src/resources/assets
の内容がビルドされ、src/public/
以下に配置されていきます。
以上です。
まとめ
これで、フロントエンドも含めた” Docker + Laravel “な環境が準備できました。
” Laradock “、素晴らしいです。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。