Laradockを使ってLaravel環境を構築した


はじめに

今更感満載ですが、 流行りの LaravelLaradock を用いて立ててみました。
Qiitaだけでも漁るといっぱい記事が出てくる内容にはなりますが、ご了承くださいm(_ _)m

Laradockとは?

こちら になります。
dockerでLaravelを動かすために開発されたプロジェクトです。
様々なPHPのバージョン、DB、ミドルウェアをチョイスすることが出来るようです。

前提

下記モジュールがインストールされていること。
それぞれ参考記事を確認いただければ、サクッとインストール可能です。

Laradockのインストール

プロジェクト用ディレクトリ作成

まずは下記コマンドで、プロジェクト用のディレクトリを作成します。

% mkdir ~/workspace/laravel_sample
% cd ~/workspace/laravel_sample

githubからのclone

下記コマンドで、githubから Laradock をダウンロードします。

% git clone https://github.com/Laradock/laradock.git
Cloning into 'laradock'...
remote: Enumerating objects: 10007, done.
remote: Total 10007 (delta 0), reused 0 (delta 0), pack-reused 10007
Receiving objects: 100% (10007/10007), 8.99 MiB | 3.30 MiB/s, done.
Resolving deltas: 100% (5432/5432), done.

.envファイルの修正

クローンした Laradock ディレクトリ内にある、 env-example をコピーして 設定定義用の .env を作成します。

% cd laradock
% cp env-example .env
% ls -l .env
-rw-r--r--  1 member group  27511  1 20 17:35 .env

その後、 .env ファイルに、下記を追加します。

DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd

dockerコンテナの実行

これでコンテナを起動する設定が完了したため、任意のコンテナを実行します。
今回の例では nginx mysql redis を実行しています。
サポートされているミドルウェアについては、 公式ページ をご確認ください。

docker-compose up -d nginx mysql redis workspace

dockerコンテナの起動確認

下記コマンドでコンテナが起動していることを確認します。

% docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                      NAMES
359efff2066b        laradock_nginx       "/bin/bash /opt/star…"   2 minutes ago       Up 2 minutes        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   laradock_nginx_1
e920c68c0061        laradock_php-fpm     "docker-php-entrypoi…"   2 minutes ago       Up 2 minutes        9000/tcp                                   laradock_php-fpm_1
192ebe58ccea        laradock_workspace   "/sbin/my_init"          2 minutes ago       Up 2 minutes        0.0.0.0:2222->22/tcp                       laradock_workspace_1
84fbc83b3730        docker:dind          "dockerd-entrypoint.…"   2 minutes ago       Up 2 minutes        2375-2376/tcp                              laradock_docker-in-docker_1
28c432f44127        laradock_mysql       "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp          laradock_mysql_1
1722ae0554b7        laradock_redis       "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:6379->6379/tcp                     laradock_redis_1

このまま http://localhost にアクセスすると、nginxの404ページが表示されると思います。

Laravelプロジェクトの作成

まずは下記コマンドを実行し、 laradock_workspace のイメージから作られたコンテナの中に入ります。

docker exec -it laradock_workspace_1 bash
root@192ebe58ccea:/var/www#

プロジェクト作成

下記コマンドで Laravel プロジェクトを実際に作成します。

composer create-project laravel/laravel laravel_sample

権限変更

webサーバーから書き込みを許可するために、権限を変更する必要があるため、
下記コマンドを storage bootstrap/cache に対して実行します。

cd laravel_sample
chmod 766 storage
chmod 766 bootstrap/cache

nginxのドキュメントルートの設定

このままだと nginx が別のディレクトリを参照しているため、
laradockディレクトリ内の default.conf を修正して、ドキュメントルートを設定します。

vim /var/www/laradock/nginx/sites/default.conf

13行目あたりにある、 root の部分を、
laravel プロジェクトの public ディレクトリに修正します。

 12     server_name localhost;
 13     root /var/www/laravel_sample/public; # この部分を修正。laravel_sampleはプロジェクト名。
 14     index index.php index.html index.htm;

ここまで全て完了したら、dockerコンテナから出ます。

root@192ebe58ccea:/var/www# exit
exit

設定の反映

設定を反映するために、下記コマンドを実行し、コンテナの再起動を行います。
(コンテナIDは laradock_nginx のものを指定します。)

docker  restart 359efff2066b

起動確認

ブラウザから http://localhost にアクセスし、下記画面が表示されることを確認します。

これでLaravelが立ち上がりました!簡単!

まとめ

Laradock を使用すると、 Laravel の開発環境、
また必要な各種モジュールを簡単にインストールすることができます。

今回の記事では触れませんでしたが、
ホストの Laravel プロジェクトと Docker 内の Laravel プロジェクトをマウントすることで、
ホスト側を修正すると Laravel プロジェクトに即時反映する環境を作ることができます。
下記ページが参考になるかと。。
【Docker】Dockerでホストのディレクトリをマウントする

Docker 便利なので、どんどん使って慣れていきたいですね!
読んで頂きありがとうございました!

共に働くWebエンジニアを募集しています!

不動産SHOPナカジツでは自社サービスを作っていく仲間を募集しています。
詳しくはWantedlyからお問い合わせください。
お待ちしております!