- Laravelの環境構築をしたい!
- Laradockの使い方がわからない!
- Lardockのデータベースがつながらない!
今回の記事ではこんな悩みを解決していきます。
LaradockはDocker+Laravelの環境を簡単に構築出来るようにしてくれたパッケージです。
本来なら自分でPHP、MySQL、nginxなどをインストールする必要があるのに対し、Lardockを使えばインストールしたいライブラリを指定するだけでインストールをすることが可能です。
しかし簡単と言えど、Dockerと言うなれないプラットフォーム上に構築されるので、どんなコマンドを入力すればよいか分からず挫折する方も多いと思います。
そこで今回の記事ではLaradockを使ってウェルカムページを表示してデータベースを使える様にするまでを徹底的に解説していきます。
環境
今回の内容は利用している環境に左右されない想定ですが、一応動作確認した際の環境を記載します。
動作確認の環境
- macOS Catalina 10.15.2
事前準備
Laradockを利用するために2つの準備が必要です。
事前準備
- Gitのインストール
- Dockerのインストール
Gitのインストール
Laradockは git clone
コマンドを使ってダウンロードをするため、Gitコマンドが必要になります。
MacであればデフォルトでGitがインストールされていますが、Windowsをお使いの場合は下記のサイトからインストーラーをダウンロードして実行しておきましょう。
Dockerのインストール
Laradockは名前の通りDockerを利用して動かしていきます。
そのため環境を構築するパソコンにDockerをインストールしている必要があります。
MacにDockerをインストール
Macであれば下記のサイトから「Get Docker」を選択してインストールを行う事が出来ます。
※インストールをする際には無料のアカウントが必要
WindowsにDockerをインストール
WindowsにDockerをインストールする方法は、Macより少し手順が多いですが下記の記事などを参考にインストールを行いましょう。
Laradockを使ってLaravelの環境を構築する流れ
Laradock環境の構築手順
- Laravelプロジェクトを入れるディレクトリを作成
- Laradockをgit cloneでダウンロード
- Laradockの.envファイルを作成
- Laradockを起動
- Laravelプロジェクトの作成
- yarn installの実行
- Laradockの.envファイルを編集
- Laravelの.envファイルの編集
- 画面の確認
- データベースの状態を確認
ディレクトリの作成
まずはLaradockとLaravelのプロジェクトを格納するディレクトリを作成して行きます。
Console
$ mkdir laradock-practice
$ cd laradock-practice
mkdir
でディレクトリを作成後は、 cd
コマンドで作成したディレクトリの中に移動しておきましょう。
またこの記事では laradock-practice
という名称にしていますが、ディレクトリ名は任意のものでOKです。
Laradockをクローンする
続いてLaradockをクローンして行きます。
Console – laradock-practice
$ pwd
/Users/himakuro/Documents/project/laradock-practice
$ git clone https://github.com/LaraDock/laradock.git
Cloning into 'laradock'...
remote: Enumerating objects: 10339, done.
remote: Total 10339 (delta 0), reused 0 (delta 0), pack-reused 10339
Receiving objects: 100% (10339/10339), 9.27 MiB | 3.13 MiB/s, done.
Resolving deltas: 100% (5599/5599), done.
クローンコマンドを入力する際には必ず pwd
コマンドで laradock-practice
の中に移動が出来ているかを確認してから行うようにしましょう。
Laradockの.envファイルを作成
Laradockのクローンが完了すると、新たに laradock
ディレクトリが作成され、その中には env-example
と言う環境変数が大量に書かれたファイルが存在します。
しかしLaradockでは .env
というファイルを環境変数のファイルとして読み込む設定になっているので、このままでは環境変数が読み込まれることはありません。
そこで下記のコマンドを入力して env-example
を元に、.env
を作成しましょう。
Console – laradock-practice
$ cp laradock/env-example laradock/.env
上記のcpコマンドはlaradock-practice
のディレクトリでの実行を想定していて、実行が完了すると laradock
のディレクトリ内に .env
ファイルが作成されます。
ファイルを作成後は cat
コマンドなどを使い、.env
ファイルが作られていて中身も入っている事を確認しておきましょう。
Console – laradock-practice
$ cat laradock/.env
cat laradock/.env
###########################################################
###################### General Setup ######################
###########################################################
### Paths #################################################
# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../
.
.
.
(※大量のログが流れます)
Laradockの起動
.env
ファイルの準備が出来たらいよいよLaradockを起動していきます。
Laradockを起動するためにcdコマンドでlaradockのディレクトリに移動し、docker-composeコマンドで起動を行います。
Console
$ cd laradock
$ docker-compose up -d workspace
Creating network "laradock_frontend" with driver "bridge"
Creating network "laradock_backend" with driver "bridge"
Creating network "laradock_default" with the default driver
Creating laradock_docker-in-docker_1 ... done
Creating laradock_workspace_1 ... done
起動後は下記のコマンドで、2つのイメージが起動しているかを確認しましょう。
Console
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55f586c0e403 laradock_workspace "/sbin/my_init" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp, 0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp laradock_workspace_1
76edba727589 docker:19.03-dind "dockerd-entrypoint.…" 5 minutes ago Up 5 minutes 2375-2376/tcp laradock_docker-in-docker_1
Laravelプロジェクトの作成
続いてLaravelのプロジェクトを作成していきます。
プロジェクトを作成するために、まずbashコマンドでLaradockのコンテナの中に入ります。
Console – Local
$ docker-compose exec --user=laradock workspace bash
# workspaceコンテナの中に入った後はpwdでディレクトリを確認
$ pwd
/var/www
pwdコマンドで居場所を確認したら、次はLaravelのファイル群を下記のコマンドで作成していきます。
workspaceのコンテナ内
$ composer create-project laravel/laravel --prefer-dist
Installing laravel/laravel (v7.3.0)
- Installing laravel/laravel (v7.3.0): Downloading (100%)
Created project in /var/www/laravel
.
省略
.
Application key set successfully.
(※大量のログが流れます)
このコマンド実行が終わると新たにlaravelというディレクトリが作成され、中には大量のファイルが作成されます。
composer installの実行
続いて作成されたlaravelのディレクトリの中に入りcomposer installのコマンドを実行していきます。
このコマンドを実行することで、Laravelに必要なライブラリのインストールが行われます。
workspaceのコンテナ内
$ pwd
/var/www
$ cd laravel
$ composer install
yarn installの実行
次はyarn installのコマンドを実行していきます。
先程のcomposer installはサーバー側の実装に必要なライブラリをインストールしましたが、このyarn installでは主にフロント側、画面を作成していくのに必要なライブラリ群がインストールされます。
workspaceのコンテナ内
$ pwd
/var/www/laravel
$ yarn install
yarn install v1.22.4
info No lockfile found.
.
省略
.
success Saved lockfile.
Done in 57.40s.
yarn install完了したらexitコマンドでworkspaceのコンテナから出ましょう。
workspaceのコンテナ内
$ exit
Laradockの.envファイルを編集
続いてlaradockの.envファイルを開き、APP_CODE_PATH_HOSTとNGINX_HOST_HTTP_PORTを下記のように変更して保存しましょう
laradock/.env
APP_CODE_PATH_HOST=../laravel/
NGINX_HOST_HTTP_PORT=3000
これを行うことにより、laravelディレクトリの内容が3000番ポートで起動が出来るようになります。
Laravelの.envファイルの編集
続いてLaravel側の.envファイルを編集していきます。
デフォルトの値だとデータベースに接続する事が出来ないので、下記の様に3つの値を変更しましょう。
laravel/.env
DB_HOST=mysql
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
画面の確認
ここまでの作業が終わるとLaravelのWelcomeページが開けるようになるはずなので、起動中のコンテナを一度落として起動し直して確認してみましょう。
Console
$ pwd
xxxx/laradock-practice/laradock
$ docker-compose down
$ docker-compose up -d nginx mysql
「http://localhost:3000/」にアクセスをしてみて下記のページが表示されればOKです。
マイグレーションの実行
続いてLaravelから正常にデータベースのテーブルを作成出来るかを試していきます。
Console
# コンテナに入る
$ docker exec -it laradock_workspace_1 bash
# コンテナ内で実行
$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (2,435.18ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (617.20ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (824.36ms)
マイグレーションの状態を確認
Console
$ docker exec -it laradock_workspace_1 bash
$ php artisan migrate:status
root@6872a26d8c89:/var/www# php artisan migrate:status
+------+------------------------------------------------+-------+
| Ran? | Migration | Batch |
+------+------------------------------------------------+-------+
| Yes | 2014_10_12_000000_create_users_table | 1 |
| Yes | 2014_10_12_100000_create_password_resets_table | 1 |
| Yes | 2019_08_19_000000_create_failed_jobs_table | 1 |
+------+------------------------------------------------+-------+
php artisan migrate:statusというのは現在のマイグレーションの状態を確認出来るコマンドで、Ranの項目がYesになっていればテーブルが正常に作成出来ているという事になります。
もしNoになっていた場合は、テーブルが作成出来ていない事になるのでphp artisan migrateを実行してテーブル作成を完了させましょう。
- 1. laravel/.envの設定
- 2. default以外のデータベース名を指定している場合は、自分でデータベースを作成したか
Laradockを使うのは決して難しくはない
今回の記事ではLaradockを使ってLaravelの環境構築を行いました。
全てを理解して使いこなすのは大変ですが、コマンドを入力してLaravelの環境を構築するだけであれば決して難しくはありません。
LaravelはPHPのフレームワークでも圧倒的ポジションを確立しつつあるので、是非これを機会にあなたのパソコンにもLaravelの環境を構築してみてはいかがでしょうか。