schedule2019-04-18

LaradockでPHP 7.3のLaravel環境構築

Laradockを利用してDocker上にLaravel環境を構築する手順です。 NginxとPHP7.3の環境にします。

※ 多少抜け漏れがあります。GW中には修正します。

環境とバージョン

  • Laradock
  • PHP 7.3
  • Laravel 5.3
  • Nginx

DBの接続はまだ書けていません。 作業環境がWindows10 Homeであるため、DockerはDocker Tool Boxを利用しています。

準備

gitとDocker、docker-composeを用意してください。

また、当サイトではDockerの環境の構築手順は以下の記事を用意しています。

Laravelの環境構築

今回はprojectディレクトリを作ってその中で作業します。 最終的なLaradockとLaravelのアプリMyAppの構成は以下のようになります。

project/
 ├─ laradock
 |   ├─ nginx
 |   ├─ php-fpm
 |   └─ .env
 └─ MyApp
     ├─ public          # nginxで通すパス
     └─ composer.json   # 依存するパッケージを定義するためのファイル

laradockをインストールする

laradockを導入していきます。

laradock/laradock

# projectに移動してclone
$ cd path/to/project
project$ git clone https://github.com/Laradock/laradock.git

# 設定ファイルをリネームする
project$ cd laradock
laradock$ cp env-example .env

project/laradock/.envには、Docker Imageの設定が入っています。

.envの設定とPHPのバージョン変更

NginxでPHPを動かすためphp-fpmを使います。理由はこちら

project/laradock/.envにあるPHPのバージョンを変更します。

### PHP Version ###########################################

# Select a PHP version of the Workspace and PHP-FPM containers (Does not MyApply to HHVM). Accepted values: 7.3 - 7.2 - 7.1 - 7.0 - 5.6
- PHP_VERSION=7.2
+ PHP_VERSION=7.3

バージョンを変更したので、php-fpmのイメージを作り直します。

laradock$ docker-compose build php-fpm

他のバージョンについてはこちら。

Laradockでphpのバージョンを変更する

コンテナの作成と開始

必要なコンテナを立ち上げます。

laradock$ docker-compose up -d nginx mysql workspace

立ち上がっているコンテナを確認します。

laradock$ docker-compose ps
指定されたパスが見つかりません。
           Name                          Command              State                     Ports
---------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh           Up       2375/tcp
laradock_mysql_1              docker-entrypoint.sh mysqld     Exit 3
laradock_nginx_1              /bin/bash /opt/startup.sh       Up       0.0.0.0:443->443/tcp, 0.0.0.0:80->80/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

php-fpmコンテナも一緒に立ち上がります。

※ mysqlコンテナが立ち上がっていないため、いつか修正する。

Laravelのセットアップ

workspaceコンテナにLaravelをインストールしていきます。

コンテナの準備

workspaceのコンテナに入って、Laravelをインストールする準備をします。 docker-compose exec {コンテナ名} bashで立ち上げているコンテナに入ることができます。

laradock$ docker-compose exec workspace bash
/var/www#

イメージのOSディストリビューションはUbuntu 16.04 LTSでした。 インストーラーapt-getの更新と作業用のvimを入れておきます。

/var/www# apt-get update
/var/www# apt-get install vim

Laravel 5.8のインストール

LaravelのプロジェクトMyAppを作る。

/var/www# mkdir MyApp
/var/www# ls
MyApp

composerは既に入っています。 Laravel 5.8をインストールします。

/var/www# composer create-project "laravel/laravel=5.8.*" MyApp

# 中を確認します。
/var/www# ls MyApp/
MyApp      bootstrap      composer.lock  database      phpunit.xml  readme.md  routes      storage  vendor
artisan  composer.json  config         package.json  public       resources  server.php  tests    webpack.mix.js

アプリケーションキーの作成と.envファイルを作成します。

/var/www# cd MyApp/
/var/www/MyApp# cp -p .env.example .env
/var/www/MyApp# php artisan key:generate

続いて、ファイルアップロードの機能用にディレクトリの権限を変更します。

/var/www/MyApp# chmod 766 storage
/var/www/MyApp# chmod 766 bootstrap/cache

workspaceのコンテナの作業は終わりです。 コンテナから出ます。

/var/www# exit

アプリケーションのパスを通す

project/MyAppにアプリケーションのパスを通します。

docker-compose.yml

      volumes:
-        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
+        - ${APP_CODE_PATH_HOST}/MyApp:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}

NginxのルートにMyApp/publicを通します。

laradock/nginx/sites/default.conf

- root /var/www/public;
+ root /var/www/MyApp/public;

コンテナを再起動する。

$ docker-compose restart

http://localhost/を開いてLaravelの画面が出たら完了です。 お疲れ様でした。

参考

公式

記事

Laravelのおすすめ参考書

こちらの書籍でLaravelの全体像が分かりやすいです。 MVCの概念の説明から開発環境の構築、Laravelの基本的な機能について学べます。

PHPフレームワーク Laravel入門

  • バージョン:Laravel 5.4
  • OS:Windows, Mac OS対応

注意:HTML/CSSが解かる人向けです。基本からちょっと外れたこと(既存のDBを使う方法など)は載っていません。