Help us understand the problem. What is going on with this article?

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 にアクセスし、下記画面が表示されることを確認します。
スクリーンショット 2020-01-20 18.31.42.png

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

まとめ

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

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

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

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした