Laravel開発環境をLaradockで構築する
Laravelには公式でHomesteadという開発環境が提供されていますが、
Dockerで開発環境を構築したので、手順をご紹介します。
Dockerに加えて、今回はLaradockを使用します。
Laradockは、DockerImageを作成するためのDockerfileや、定義ファイルを多数提供しています。
WebサーバやDBを必要に合わせて選ぶことが可能です。
用意されているDockerfileはGithubリポジトリを参照してください。
https://github.com/laradock/laradock
- [補足] Dockerとは、Linuxのコンテナ仮想技術を使用したアプリケーション実行環境のプラットフォームです。
実施環境
今回、開発環境を構築したのは以下の環境です。
- 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
コンテナの作成・起動
今回は、以下の構成でコンテナを作成&起動してみましょう。
コンテナ起動時に、引数として作成したいサービスを指定します。
なお、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の切り替えなども容易にできます。
多様なプロジェクトに対応するには持って来いです。
チームで共有して、作業効率を上げていきたいです!