PHP コンテナー仮想化

WindowsにLaravel 5.4をインストールする

投稿日:2017/07/23 更新日:

どうもPHP初心者、Laravel初心者のものです。
今回の案件ではPHPのフレームワークにLaravelを使うことにしましたのでインストール手順をまとめたいと思います。

環境

ホストOS:Windows 10
Docker:Docker for Windows
PHP: 5.6(稼働環境の関係で7.x系にできない・・・)
Laravel: 5.4
いつものようにGitHubにプッシュしてあります。
laravel-docker-for-windows

Docker

開発はすべてWindowsで行いますがartisanコマンド等はDocker上で行います。
なのでdocker run時にアプリケーションディレクトリをマウントして起動します。
プロダクション環境はオンプレでDockerは動かせないので、Dockerはあくまで開発環境として使用します。
Windowsにphpをインストールしても同様なことができると思いますので、ここはお好みで。

phpはオフィシャルのイメージをベースにしても良いのですがパッケージ等インストールするので今回はCentOSのイメージから作りました。

FROM centos:7
RUN yum -y update
RUN yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm \
    && yum -y install --enablerepo=remi-php56 php php-mysql php-gd php-mbstring php-xml php-mcrypt
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer

docker build -t php56 .等を実行してエラーがでなければ大丈夫だと思います。

Docker Compose

Dockerfileだけで大丈夫なんですけど、起動オプションとかマウントとか毎回入力するの面倒なので環境情報などをdocker-compose.ymlに書いてdocker-composeで実行すると楽です。
あとDcoker Composeを使うとマウントするときに相対パスが使えるようになります。

version: "3"
services:
  php56:
    build: ./src/Docker/php56
    ports:
      - 8080:8080
    volumes:
      - src/app:/app
    command: tail -f /dev/null

docker-compose up -dでコンテナを立ち上げてdocker-compose ps等で起動していれば大丈夫です。
Docker for Windows使っている人はDocker for Windowsの設定でShared Drivesを適切に設定しておく必要があります。

Laravelのインストール

Laravelはインストーラーを使う方法とComposerを使う方法があるのですが、今回はComposerを使ってインストールしました。
上で作成したphp56コンテナにComposerがインストールしてあるのでphp56コンテナに入って作業します。
docker-compose exec php56 bashでphp56コンテナに入る。

### Laravelをインストールする
composer create-project --prefer-dist laravel/laravel . "5.4.*"

### artisanコマンドが実行できるか確認する
php artisan -V

### 内蔵httpサーバーを起動する
php artisan serve --host 0.0.0.0 --port 8080

ブラウザでhttp://localhost:8080/にアクセスしてLaravelのページが表示されればインストール完了です。

まとめ

Docker for WindowsをインストールするとDocker Composeも使えるようになります。
アプリケーションがRDBMSを使う場合もdocker-compose.ymlにサービスを追加すると使えるようになるので拡張性も高いと思います。

-PHP, コンテナー仮想化
-,

執筆者:


comment

メールアドレスが公開されることはありません。

関連記事

CakePHPで独自のコントローラーを継承する方法

CakePHPで独自に作ったコントローラーを継承する方法を調べました。 自分はJavaをよく使っていたというのは変かもしれませんがコントローラーの継承というのはそれほど違和感はないのですがCakePH …

Jenkins2でpipelineを使ってビルドするやりかた

概要 先日Jenkins2がリリースされました。 今はまだJenkins1系を使っているのですが、Jenkins2でビルド時にpipelineを使えるということで、一部のジョブをJenkins2に移行 …

DockerでReadyMedia(MiniDLNA)を起動する

家にCentOSでNASといってもRAID構成はしていない簡易的なものがあるのですが、DockerでReadyMediaを起動してみました。 ホストにインストールしてもよかったのですが、FFmpegっ …

Laravelでテーブルの主キーに文字列型を使う場合のモデルの定義

ポストタイトルの通りなんですけどLaravelでテーブルの主キーに文字列型を使う場合ですがModel#findで検索すると結果は帰ってくるのですが主キー項目の値を表示されると0と表示されてしまいました …

CakePHPでコントローラーの呼び出しURLを変更する

CakePHPでは基本的にURLとコントローラーは一致します。 例えば /users/index というURLの場合、呼び出されるコントローラーは UsersController が呼び出されます。 …