asahara

Laravel開発環境をLaradockで構築する

Laravelには公式でHomesteadという開発環境が提供されていますが、
Dockerで開発環境を構築したので、手順をご紹介します。

Dockerに加えて、今回はLaradockを使用します。
Laradockは、DockerImageを作成するためのDockerfileや、定義ファイルを多数提供しています。
WebサーバやDBを必要に合わせて選ぶことが可能です。

用意されているDockerfileはGithubリポジトリを参照してください。
https://github.com/laradock/laradock

  • [補足] Dockerとは、Linuxのコンテナ仮想技術を使用したアプリケーション実行環境のプラットフォームです。

https://www.docker.com/

実施環境

今回、開発環境を構築したのは以下の環境です。

  • OS X 10.11.6
  •                 
  • Docker for Mac Version 1.13.0

事前準備

Docker for Macのインストール

以下のページよりDocker for Macをインストールします。
https://docs.docker.com/docker-for-mac/

Laradockをcloneする

まず、任意のプロジェクト用ディレクトリを作成します。
mkdir app

次に、作成したディレクトリにてLaradockをcloneします。
cd app
git clone https://github.com/Laradock/laradock.git

完了するとディレクトリapp/laradockが作成されます。

laravelプロジェクトの作成

Laradockのディレクトリに移動し、workspaceのコンテナを作成&起動します。
cd laradock
docker-compose up -d workspace

作成後、コンテナ名を確認します。
docker-compose ps

         Name                        Command               State                     Ports
------------------------------------------------------------------------------------------------------------
laradock_workspace_1      /sbin/my_init                    Up       0.0.0.0:2222->22/tcp

コンテナ名が確認できたら、workspaceに入ります。
docker exec -it laradock_workspace_1 /bin/bash

コンテナに入ることができたら、composerでlaravelのプロジェクトを作成します。
今回は/var/wwwで以下のコマンドを実行します。
composer create-project laravel/laravel myapp

プロジェクトを作成したらworkspaceから出て、停止させます。
exit
docker-compose stop

ボリュームのマウント

ホスト(Mac)にDockerコンテナのボリュームをマウントします。
laradock/docker-compose.ymlを開いて、パスを編集しましょう。

  • ホストのパス:ゲストのパス

docker-compose.yml

services:
(中略)
    applications:
        image: tianon/true
        volumes:
            - ../myapp:/var/www/myapp
(以下略)

仮想ホストの設定

laradock/nginx/sites/sample.conf.exampleをコピーし、myapp.confにリネームします。

リネームしたmyapp.confで、ドメインとドキュメントルートを指定します。

myapp.conf

    server_name myapp.dev;
    root /var/www/myapp/public;

次はMacに置かれているetc/hostsにもドメインを追加します。

hosts

    127.0.0.1   myapp.dev

Nginxのポート変更

Mac標準のApacheと被るので、Nginxのポートを8888に変更しておきましょう。

docker-compose.yml

    nginx:
        (中略)
        ports:
            - "8888:80"
            - "443:443"
        links:
            - php-fpm

コンテナの作成・起動

今回は、以下の構成でコンテナを作成&起動してみましょう。

  • Nginx
  • php-fpm
  • MySQL
  • phpmyadmin
  • コンテナ起動時に、引数として作成したいサービスを指定します。
    なお、php-fpmとworkspaceは未指定の場合でも起動できます。
    docker-compose up -d nginx mysql phpmyadmin

    ブラウザからアクセス

    コンテナが全て起動したら、myapp.dev:8888にアクセスしてみます。

    laravelの初期画面が表示できたら完了です。

    次にphpmyadminを確認してみましょう。localhost:8080にアクセスしてください。

    管理画面を表示することができました。
    DB情報はdocker-compose.ymlを参照してください。
    設定を変えたい場合は、下記の環境変数を変更します。

    docker-compose.yml

    mysql:
        build:
            context: ./mysql
            args:
                - MYSQL_DATABASE=laradock
                - MYSQL_USER=laradock
                - MYSQL_PASSWORD=hoge
                - MYSQL_ROOT_PASSWORD=fugaroot

    まとめ

    最初に記述したとおり、LaradockはDockerfileを複数提供しているので、
    プロジェクトにあわせてphpのバージョンや、ApacheとNginxの切り替えなども容易にできます。
    多様なプロジェクトに対応するには持って来いです。

    チームで共有して、作業効率を上げていきたいです!

    参考

    お問い合わせはこちら