はじめに
今回の記事は、PHPのフレームワークであるLaravelの開発環境構築に関する記事です。Laravelの基礎知識に関してはこちらをご覧ください。
開発環境構築
Laravelの開発環境構築には大きく分けて2つの方法があります。
- Homesteadを利用する方法
- Laradockを利用する方法
これらの特徴について簡単に説明します。
Homestead
HomesteadはLaravelの実行に必要なPHP、Nginx、Webサーバ、MySQLなどのほか、Redis、Mailhog(簡易メールサーバ)Nodeなどがセットになっています。はじめから様々なソフトウェアが揃っているため、初学者が利用するならこちらが良いのではないでしょうか(もちろんヘビーユーザでも不足なく利用できます)
Laradock
Laradockは名前の通りDocker上で動作します(HomesteadはVagrant上で動作します)Laradockでは下記の機能が別々のコンテナ上で動作します。
- Nginx
- PHP-FPM
- MySQL
- workspace(Laravelの開発に必要な環境がまとまっているもの)
- phpMyAdmin
Laradockで開発環境構築
今回は個人的な興味からLaradockを利用して開発環境を構築しました。既にGitとDockerが利用できている前提で進めます。
Laradockのダウンロード
適当なディレクトリにLaradockをダウンロードします。今回はユーザディレクトリの直下に「laradock_test」ディレクトリを作成して、そこにダウンロードします。
1 2 3 4 5 6 7 8 | $ mkdir laradock_test $ cd laradock_test/ $ git clone https://github.com/Laradock/laradock.git Cloning into 'laradock'... remote: Enumerating objects: 8397, done. remote: Total 8397 (delta 0), reused 0 (delta 0), pack-reused 8397 Receiving objects: 100% (8397/8397), 7.92 MiB | 4.04 MiB/s, done. Resolving deltas: 100% (4435/4435), done. |
コンテナの設定ファイルを作成
ダウンロードしたlaradockディレクトリのenv-exampleファイルをコピーして.envファイルを作成します。
1 2 | $ cd laradock/ $ cp env-example .env |
設定ファイルに以下の3行を追加します。
1 2 3 | DB_HOST=mysql REDIS_HOST=redis QUEUE_HOST=beanstalkd |
コンテナの初期化
docker-compose upコマンドでコンテナを初期化します。
1 | $ docker-compose up -d nginx mysql phpmyadmin redis workspace |
初期化が終わったら正しく起動できたか確認します。下記のように表示されれば問題ありません。
1 2 3 4 5 6 7 8 | $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 344dc39e69be laradock_nginx "/bin/bash /opt/star…" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp laradock_nginx_1 0be102733067 laradock_php-fpm "docker-php-entrypoi…" 6 minutes ago Up 6 minutes 9000/tcp laradock_php-fpm_1 13c4721d4e79 laradock_phpmyadmin "/run.sh supervisord…" 6 minutes ago Up 6 minutes 9000/tcp, 0.0.0.0:8080->80/tcp laradock_phpmyadmin_1 ec89a55fe5d7 laradock_workspace "/sbin/my_init" 6 minutes ago Up 6 minutes 0.0.0.0:2222->22/tcp laradock_workspace_1 801267ad2107 laradock_mysql "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 0.0.0.0:3306->3306/tcp laradock_mysql_1 4cb641f21211 docker:dind "dockerd-entrypoint.…" 6 minutes ago Up 6 minutes 2375/tcp laradock_docker-in-docker_1 |
プロジェクトの作成
試しにプロジェクトを作成してみます。プロジェクトはworkspaceコンテナ上に作成されます。まず、コンテナにログインします。
1 | $ docker-compose exec --user=laradock workspace bash |
予め用意されているlaradockユーザでログインすると、/var/wwwディレクトリに入ります。続いてこのディレクトリで新規プロジェクトを作成します。
1 | $ composer create-project laravel/laravel sample --prefer-dist "5.5.*" |
プロジェクトが作成できたらコンテナからログアウトします。
1 | $ exit |
共有ディレクトリの設定
laradockディレクトリの.envファイルを開いて共有ディレクトリの設定を変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ########################################################### ###################### General Setup ###################### ########################################################### ### Paths ################################################# # Point to the path of your applications code on your host # APP_CODE_PATH_HOST=../ # コメントアウト APP_CODE_PATH_HOST=../sample # 追加 # Point to where the `APP_CODE_PATH_HOST` should be in the container. You may add flags to the path `:cached`, `:delegated`. When using Docker Sync add `:nocopy` APP_CODE_PATH_CONTAINER=/var/www:cached # Choose storage path on your machine. For all storage systems DATA_PATH_HOST=~/.laradock/data |
変更後、コンテナを再起動して設定を反映させます。
1 2 3 4 5 6 7 8 9 10 11 12 13 | $ docker-compose stop Stopping laradock_nginx_1 ... done Stopping laradock_php-fpm_1 ... done Stopping laradock_phpmyadmin_1 ... done Stopping laradock_workspace_1 ... done Stopping laradock_mysql_1 ... done Stopping laradock_docker-in-docker_1 ... done $ docker-compose up -d nginx mysql Recreating laradock_docker-in-docker_1 ... done Starting laradock_mysql_1 ... done Recreating laradock_workspace_1 ... done Recreating laradock_php-fpm_1 ... done Recreating laradock_nginx_1 ... done |
ブラウザからアクセスする
ブラウザから「http://localhost」にアクセスします。
さいごに
Laravelの開発環境構築について手順を紹介しました。