はじめに
今回の記事は、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の開発環境構築について手順を紹介しました。
 
  
 
 
 
 
 
 
