時間も場所もお金も自由な生活を手に入れる人生を目指し中

【初心者向け】LaradockでLaravelローカル開発環境を構築(Mac OS)

Laravelを勉強しようと思い、Laradockを使って環境構築に挑んだのですが、

  • 「公式ドキュメントだけだと分かりにくい…」
  • 「参考にした情報が古かったためか、今のバージョンでやるとエラーになる…」
  • 「Qiitaの記事、ところどころ操作が抜けててその通りにやっても上手くいかない…」

こんな感じで一発で上手くいかず、とても苦労したので成功した手順を備忘録としてまとめておきます。(実はここにたどり着くまでに2日ほど何度もエラーと戦い、10回くらい消して入れてを繰り返した…)

私のようにDocker初心者で環境構築に困っている人の参考になれば幸いです。

目次

(事前準備)Dockerのインストール

前提として、GitとDockerが使えるようになっている必要があります。

Dockerをまだ入れていない方は、こちらの記事の前半にインストール方法がありますので、参考にして入れておいてください。

Laravel環境構築手順

準備が整ったら、環境構築に入ります。
今回、最終的に出来上がるディレクトリの構成は以下のようになります。

  • laradock: Laradockのソース一式
  • sample_app: Laravelのソース一式

作業ディレクトリの作成

まずはlaradockとlaravelのソースを入れるディレクトリを作成し、そこに移動します。

$ mkdir Laravel
$cd Laravel 

Laradockのダウンロード

GitHubからLaradockをcloneします。

$ git clone https://github.com/LaraDock/laradock.git

終わったら、laradockディレクトリができていることが確認できますので、そこに移動します。

$ ls -l
laradock
$ cd laradock

.env(設定ファイル)の編集 1

laradock内の「env-example」ファイルをコピーして設定ファイル(.env)作成します。

$ cp env-example .env

作成した.envを開き、上から順に以下を編集していきます。

1.DBの保存先を変更

デフォルトだとDBの保存先がホームディレクトリになっているので、プロジェクトのディレクトリ(今回つくったディレクトリの中)になるよう、以下のように書き換えます。

# DATA_PATH_HOST=~/.laradock/data
↓
DATA_PATH_HOST=.laradock/data

2.コンテナ名を編集

COMPOSE_PROJECT_NAMEを「laradock」から分かりやすいように「sample_app」へ変更。

# COMPOSE_PROJECT_NAME=laradock
↓
COMPOSE_PROJECT_NAME=sample_app

3.nginxのポート変更

デフォルトのポートは8000なのですが、私はすでに8000番をWordPressのローカル環境構築に使っていたので、ポートの番号を変更します。(カブっていない方は変えなくてもOK)

# NGINX_HOST_HTTP_PORT=8000
↓
NGINX_HOST_HTTP_PORT=3000

4.MySQLのバージョンを変更

デフォルトだと最新版のバージョン8がインストールされますが、執筆時点(2020年1月)ではエラーになるので、バージョンを5.7に下げます。

先に紹介した3つの手順はやらなくてもそこまで問題はないのですが、これは超重要です!!

ちなみに私は最初に最新版を入れてしまい、このせいで何時間もエラーと格闘するハメになったのでお気をつけて…

# MYSQL_VERSION=latest
↓
MYSQL_VERSION=5.7

5.MySQLの情報を変更

これは好みなのでやらなくてもいいですが、私は分かりやすいようにDB情報(DBの名前、ユーザー名、パスワード)を変更します。

# MYSQL_DATABASE=default
# MYSQL_USER=default
# MYSQL_PASSWORD=secret
↓
MYSQL_DATABASE=sample
MYSQL_USER=sample
MYSQL_PASSWORD=sample

ここまでできたら、.envファイルを保存して閉じます。

コンテナの起動

コンテナを起動させます。

$ docker-compose up -d nginx mysql

無事に起動しているか、以下コマンドで確認します。下記のようStateがUpになっていれば起動しているのでOK。

$ docker-compose ps
          Name                       Command            State             Ports          
------------------------------------------------------------------------------------------
sample_app_docker-in-        dockerd-entrypoint.sh       Up      2375/tcp, 2376/tcp       
docker_1                                                                                  
sample_app_mysql_1           docker-entrypoint.sh        Up      0.0.0.0:3306->3306/tcp,  
                             mysqld                              33060/tcp                
sample_app_nginx_1           /bin/bash /opt/startup.sh   Up      0.0.0.0:443->443/tcp,    
                                                                 0.0.0.0:3000->80/tcp     
sample_app_php-fpm_1         docker-php-entrypoint       Up      9000/tcp                 
                             php-fpm                                                      
sample_app_workspace_1       /sbin/my_init               Up      0.0.0.0:2222->22/tcp  

ここで、http://localhost:3000にアクセス。以下のように、nginxの404ページが表示されれば正常。

Laravelのインストール

コンテナが起動できたので、Laravelをインストールします。

以下コマンドで、Dockerにあるコンテナの中に入ります。入ると2行目のようになります。

$ docker-compose exec workspace bash
root@310bc155e61f:/var/www#

コンテナの中に入れたら、以下コマンドでLaravelをインストールします。最後の「sample_app」が作成するプロジェクトの名前です。

$ composer create-project laravel/laravel sample_app

インストールが終わったら、ファイルができていることが確認できます。

$ ls -l
drwxr-xr-x 86 root root 2752 Jan 19 10:47 laradock
drwxr-xr-x 26 root root  832 Jan 19 10:52 sample_app

確認できたら、コンテナから抜けます。

$ exit

.env(設定ファイル)の編集 2

再度.envファイルを編集するため、まずはコンテナを停止します。

$ docker-compose stop

Stopping sample_app_nginx_1            ... done
Stopping sample_app_php-fpm_1          ... done
Stopping sample_app_workspace_1        ... done
Stopping sample_app_mysql_1            ... done
Stopping sample_app_docker-in-docker_1 ... done

Laradockディレクトリの中にある.envファイルを開き、ホストパスを先ほど作ったLaravelプロジェクト名に変更します。

# APP_CODE_PATH_HOST=../
↓
APP_CODE_PATH_HOST=../sample_app

変更したら、保存して閉じます。

再びアクセスすると、Laravelの初期画面が表示されます。

DBの接続設定と確認

Laravelはインストールできましたが、このままではDBに接続できていませんので、設定を行います。

今度は先ほど作ったLaravelプロジェクト(sample_app)のディレクトリ内にある.envファイルを開きます。上から順に以下を設定していきます。

1.アプリケーション名の変更

アプリケーションの名前を変更します。今回はsample_appとします。

# APP_NAME=Laravel
↓
APP_NAME=sample_app

2.DB情報の変更

データベース名、ユーザー名、パスワードを、先ほどLaradockの.envファイルで変更したDB情報と同じものに変更します。

# DB_DATABASE=laravel
# DB_USERNAME=root
# DB_PASSWORD=
↓
DB_DATABASE=sample
DB_USERNAME=sample
DB_PASSWORD=sample

変更できたら、保存して閉じます。

マイグレーション

コンテナを再起動します。

$ docker-compose restart

Restarting sample_app_nginx_1            ... done
Restarting sample_app_php-fpm_1          ... done
Restarting sample_app_workspace_1        ... done
Restarting sample_app_mysql_1            ... done
Restarting sample_app_docker-in-docker_1 ... done

コンテナが起動したら、マイグレーションを実行する。

$ cd sample_app
$ php artisan migrate

 Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.05 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.03 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (0.02 seconds)

こんな感じで実行できれば接続OK。

以上、環境構築が完了。

目次
閉じる