Laradock で PHP フレームワーク Laravel 5.4 をインストールする

PHP のフレームワークで人気の Laravel を使うために、PHP や Web サーバー、データベースを一つ一つインストールするのが大変なので、これまた最近人気の Docker + Laradock を利用して Lavavel 5.4 の環境を作りました。

Docker のインストール

Docker は Docker 公式サイトからインストーラーをダウンロードして、簡単にインストールできます。

Laradock のダウンロード (clone)

Laradock の GitHub ページから Zip ファイルをダウンロードして展開するか、git コマンドで clone をします。

$ git clone https://github.com/Laradock/laradock.git

Laradock 環境設定ファイルの作成

ダウンロードした Laradock のフォルダーに移動します。

$ cd laradock

環境設定のサンプルファイルをコピーして、環境設定ファイルを作成します。

$ cp env-example .env

Laradock の workspace コンテナの作成と起動

docker-compose up コマンドで workspace コンテナの作成と起動をします。

$ docker-compose up -d workspace
Creating laradock_applications_1
Creating laradock_workspace_1

Laravel のプロジェクトの作成

Laradock の workspace コンテナに入ります。

$ docker-compose exec workspace bash

コンテナ内で、composer を使って Laravel のプロジェクトを作成します。

# composer create-project laravel/laravel プロジェクト名

workspace コンテナから出ます。

# exit

Laradock のコンテナの停止

起動しているコンテナを停止するには、docker-compose stop コマンドを使います。

$ docker-compose stop
Stopping laradock_workspace_1 ... done

Laradock のウェブサーバーとデータベースコンテナの作成と起動

docker-compose up コマンドで使いたいウェブサーバーやデータベースなどのコンテナを指定してコンテナの作成と起動をします。例えば、ウェブサーバーに Apache 2、データベースに MySQL を使うときは、次の通りです。

$ docker-compose up -d apache2 mysql
Creating laradock_applications_1
Creating laradock_mysql_1
Creating laradock_workspace_1
Creating laradock_php-fpm_1
Creating laradock_apache2_1

(ウェブサーバーに Nginx、データベースに MariaDB を使うときは、docker-compose up -d nginx mariadb になります。)

docker-compose ps コマンドでコンテナの起動状況を表示できます。

$ docker-compose ps
      Name             Command             State              Ports       
-------------------------------------------------------------------------
laradock_apache2_1        /opt/docker/bin/entrypoint ...   Up       0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_applications_1   /true                            Exit 0
laradock_mysql_1          docker-entrypoint.sh mysqld      Up       0.0.0.0:3306->3306/tcp
laradock_php-fpm_1        docker-php-entrypoint php-fpm    Up       9000/tcp
laradock_workspace_1      /sbin/my_init                    Up       0.0.0.0:2222->22/tcp

docker-compose up コマンドで指定したサーバー以外にも、Laravel で必要な php-fpm コンテナも自動的に起動していることがわかります。

Laravel 環境設定ファイルの編集

作成した Laravel プロジェクトのフォルダーに移動して、環境設定ファイル .env の APP_NAME をアプリケーション名に、DB_HOSTmysql (MariaDB の場合は mariadb) に変更します。

APP_NAME=アプリケーション名
...
DB_HOST=mysql
...

バージョン 5.7.6 以前の MySQL やバージョン 10.2.1 以前の MariaDB を使う場合

MySQL, MariaDB を使う場合、Laravel 5.4 から文字セットが utf8mb4 になっているので、カラムの型に string を指定して、ユニーク制約やプライマリーキーを設定すると、文字列の長すぎて次のエラーが出てしまいます。

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes (SQL: ...)

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was t
oo long; max key length is 767 bytes

そこで、AppServiceProvider でデフォルトの文字列長を修正します。app/Providers/AppServiceProvider.php ファイルを開いて、boot 関数に次のように追記します。

use Illuminate\Support\Facades\Schema;
...
public function boot()
{
    Schema::defaultStringLength(191);
}
...

Laravel のインストール完了

ブラウザーで http://localhost にアクセスして、Laravel と表示されることが確認できれば、インストール完了です。

作成者: コネタねこ

上から読んでも『コネタねこ』、下から読んでも『コネタねこ』。贈り物に悩んだら、コネタねこの小ネタ帳。欲しくなっちゃうプレゼント、そんなアイデアのぞきにきてね♪

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です