Laradockを使ってLaravelプロジェクトを作成する方法【Mac・初心者】

対象
・PHPちょっと触って次にLaravel触ろうとしている人
・Laravel全く触ったことない人 Laravelの環境構築に苦戦している人  Macの人

書いてる人
・プログラミング初心者 Laravelの環境構築に死ぬほど時間がかかったので備忘録としてまとめる

知ってたらこの記事理解しやすいモノ(特にターミナルの操作はドットインストールとか何かで学んでた方がいい)

・ターミナル(黒い奴にひたすら文字打ち込んでいくやつ。ハッカーぽくてかっこいい。) 
・Docker(これ全部わかってたらこんなの見なくてもいけそう。自分も全然わかってないからさっくりわかればおk)
参考: https://kitsune.blog/docker-summary

前提
DockerとGitとComposerをとりあえずPCに入れてからじゃないと話が始まらんのでそこは割愛。(インストールするだけだから難しくないよ)
ググればでてくる。落としてきたら、Dockerを起動させといてください。MAMPとかは閉じといて。

実行環境
Docker version 19.03.12
PHP 7.3.11
git version 2.23.0
Composer version 1.10.6
各ソフトはターミナルで(〇〇--version ex. composer --version)と打てばで出てくる。逆に出てこなければ、それが入ってないからインストールしよう。


そもそもどこで環境構築がつまったかというと、Laradock1つで複数のプロジェクトを作ろうとして沼入りしてしまった。たくさんの記事を見たが、自分の知識不足で言葉の意味わからんからまた調べなきゃならないしで5日ほど費やして、ようやく解決にいたった。(複数記事はまた別記事で)

とりあえず、今回の記事ではLaradock1つとプロジェクト1つで構成していく。
目指すフォルダ構造は最終的にこんな感じ。

MyLaravelApp(どこに作っても、名前もなんでもOK、とりあえすデスクトップでも)
├── Laravelproject(自分の作りたいLaravelのアプリ名)
└── laradock

そもそもlaradockって何って話だけど、簡単にいうとLaravelプロジェクトの開発環境の1つのこと(意味わかんなくても問題ない。Laravelプロジェクトはあなたが作りたいアプリのこと。)
LaravelとDockerの言葉を合体させてLaradockって言うらしい。Laravelと言葉が混じってほんっっとうに混乱させてくれる。
名前変えて欲しい笑。

目次

mkdirでフォルダを作成。

まずデスクトップに適当なフォルダを作ろう。今回はMyLaravelAppとした。
ファインダー(macのニコっとわらってるやつ)から右クリックでフォルダを作成してる人もいると思うけど、ターミナルから「mkdir プロジェクト名」を打つことで新しくフォルダが作れるのでターミナルから作ろう。どうせこの後コマンドばっか打っことになるから触って慣れとこう。
また、コマンドを打つときに注意したいのはどこの場所でコマンドを打っているかだ。場所は今回書いていないからちゃんと自分がいる場所を確認してからコマンドを打って。(「 // 」以降はコメントだからコピペする場合は気をつけて)

mkdir MyLaravelApp //MyLaravelAppを作成

コマンドを作りたい場所で打ったら実際にファインダーを開いて、フォルダができているか確認しよう。(今回だったらデスクトップに作る)

フォルダってマウスの右クリックで作るのが当たり前だと思ってた。

今つくったMyLaravelAppフォルダにlaradockを「git clone」で落とす。

以下「git clone~」コマンドで勝手にLaradockをフォルダに落としてくれるんだ。意味わかんなくても無心でコマンドを叩く。ファインダーからもlaradockフォルダができてることがわかると思う。

git clone https://github.com/laradock/laradock.git //laradockをgithubから落としてくる

今落としてきたlaradockフォルダに移動してlaradock内のenv-exampleをコピーして.envを作る。

まず、laradockフォルダに移動するには「cd laracock」とする。「cd」コマンドは一番使うんじゃないかしら。チェンジディレクトリの略。

cd laradock //laradockフォルダに移動する


そして、「cp env-example .env」として.envファイルを作る。この.envファイルは何かというと、laradockの設定ファイルになる。あとでこれに色々書いていったりするぞ。
なんでわざわざコピーするのって思うかもしれないけど、env-exampleは雛形だからこれ使って新しいの作ってねってことだと思う。ここまではだいたいどのサイト見ても一緒なのでまずここまでは頑張ろう。.envがちゃんと作れているか確認しよう。「.」が付くファイルは隠しファイルなので、ファインダーから見る場合は「command + shift + . 」を押して隠しファイルを表示しよう。

cp env-example .env //env-exampleをコピーして.envファイルを作る。

ls -a //.envができているか確認するコマンド
ちゃんと「.env」が作れているか確認しよう。

laradock内でコンテナを作成


こっからサイトによっては書いてる順番とかが変わってくると思う。
とりあえず、今はlaradock上にいると思うので「コンテナ」を作成する。コンテナはとりあえず箱って意味かな。Dockerの概念のことでこの箱の上に色々持ってきて作業するみたい。
どうやってコンテナを作るかというと以下のコマンドを打つ。

docker-compose up -d nginx mysql phpmyadmin //nginx mysql phpmyadmin コンテナを作成・起動 -dを忘れずに!


ここで登場する「docker-compose」というコマンドをこれから多く打つことになると思うが全部laradock上で行うことに注意。これを違う場所で打ってミスるのはあるある。で、「up」はコンテナを作成して、起動。-dはよくわからん、裏で動いてるとかなんとか。 

その後は起動させたいものを指定。今回は、nignxとmysqlとphpmyadminの3つを指定。nginxとか意味わからんくてネギックスとか最初読んでたけど、webサーバーみたいなやつらしい。あとはデータベースと(mysql)データベースをわかりやすく操作できるやつ(phpmyadmin)を起動してる。全部doneになれば成功だ。他にもworkspaceとかも起動してるけど、こいつはなんかと紐付けされてるので勝手に起動するらしいよ。(このworkspaceも重要)
別にdocker-compose up -d workspaceってやってもいいと思うけど。

nginxとmysqlとphpmyadmin以外も起動しているけどよくわからん。

localhostにアクセス

さあ、こっからlocalhostにアクセスしよう。ブラウザでhttp://localhostにアクセス。
localhostは自分のPC上でネットワークにつないでくれるものらしい。いわゆるインターネットには繋がっていないけど、とりあえず繋がった時にどんな表示をしてくれるか教えてくれるものかな。でアクセスすると、404がでてくると思う。そりゃまだLaravelを落としてないから当たり前なんだけど。ただ、下にnginxって表示されると思う。これはnginxが動いてますよってことだ。これが動いてないとそもそも404すらでない。

とりあえずこいつが表示されれば成功だ。

試しに、コンテナをストップしてからもう一回localhostにアクセスして欲しい。docker-compose stopでコンテナを終了させる。(どこでdocker-composeコマンドを入力するかは覚えてるだろうか?)
どうだろう。おそらく何も表示されなかっただろうと思う。
とりあえず404すら出ない時はnginxが動いてたかちゃんと確かめよう。(docker-compose ps)

コンテナを終了した後localhostにアクセスするとこの画面が表示される。

workspaceコンテナへ入る


ここまでついてこれてるだろうか。頑張って欲しい。
ここらへんから難しくなってくると思う。次は、workspaceコンテナに入っていく。workspaceコンテナって何って思うかもしれないが自分もよくわからん。なんだよworkspaceって。目的のLaravelを落とすのに、このworkspaceの中に入っていかなきゃいけないらしい。手順4でコンテナ作成した時に一緒にworkspaceも起動したと思う。なので今回は以下のコマンドでworkspaceに入っていこう。(手順5でコンテナをstopさせた人は、再度docke-compose up -d nginx phpmyadmin mysqlで各コンテナを起動させよう)
laradock上で「docker-compose exec workspace bash」と打つ。
execはexecuteの略で、実行するという意味。bashはよくわからん。これを行って、今までユーザー名とか書かれてたところが、root@/var/www#みたいな意味不明な感じになってれば正解だ。workspaceの中に入れた。

docker-compose exec workspace bash //workspaceの中に入る

Laravelプロジェクトを作成


やっとここまでこれた。Laravelプロジェクトを作ろう!composerコマンドを使っていく。

composer create-project laravel/laravel Laravelproject(作りたいアプリの名前) // workspaceの中でやろう --prefer-distオプションをつけているサイトもある。


ここは結構時間かかる。終わったら、ファインダーで確認しよう。MyLaravelAppの中にlaradockと自分が名前をつけたプロジェクト名のフォルダがあるはずだ。Laravelはどこにあるのって思うかもしれんが、自分が名前をつけたプロジェクトそのものがLaravelだ。中を開くとたくさんフォルダやファイルが入っているとおもう。Laravelプロジェクトと言われたら、自分が名前つけてあげたフォルダそのもののことを差すと思えばよい。

laradockと同じ階層に、名前をつけたLaravelプロジェクトがあるはずだ!

※コマンドを打つ時verを指定しないと、最新のLaravelがインストールされる。特にver8はまだ解説の記事も少ないから、少し前のLaravelプロジェクトをインストールしてもいいかも。

composer create-project laravel/laravel Laravelproject "6.0.*" //Laravelのverを指定できる。

laradock内の.envを修正する

一旦、workspaceからexitコマンドでworkspaceを抜けて、localhostにアクセスしてみよう。(workspaceから抜けるにはターミナルでexitを打とう。)よっしゃ〜Laravelと表示された!、、、、と思ったらまた404だ。どうなってんだ一体。

ここで手順3で作成した.envをいじっていく必要がある。(laradockの.envだよ)
.env内のAPP_CODE_PATH_HOSTを変更して、「../」の後に手順7で作ったプロジェクト名を指定してあげよう。たぶんapplicationのpathを合わせておくってことかな~。

初期は「../」になってる。これを変更する。
「../」の後に、自分が作ったLaravelプロジェクトの名前を書く。


applicationはここでいうLaravelプロジェクトのことで、ここのPATH_HOSTを自分が作ったLaravelプロジェクト名に変更すると、workspaceへ入った時の/var/www/直下に自分のアプリが表示されている状態になる。

上のように、自分のプロジェクトを設定すると、、、
workspaceに入ったら直下にたくさんのフォルダが表示されている。
「../」の状態で、workspaceに入ると、、、
workspaceに入ったらlaradockと自分のプロジェクト名が表示されている状態になる。

ここのAPP_CODE_PATH_HOSTを自分のプロジェクト名に変更しておかないと、localhostにアクセスしても404エラーになるので注意。

APP_CODE_PATH_HOSTが「../」の状態だと、404Not Foundだ。


後、.envファイルはファインダーから開いてもいいけど、VSコードとかのエディタで書き換えた方がわかりやすいよ。(たぶんPHP触ってればVSコード触ったことあるはず、ない人は絶対入れたほうがいい。)

(8-2?)

実は、もう一つの方法に、laradockのnginx/sites/内のdefault.exampleを編集する手もある。この場合、手順8で変更したAPP_CODE_PATH_HOSTを変更しなくてもよい。正直どっちを設定してもうまくいくのでどっちの方法でもいいと思う。自分はlaradock1つで複数のプロジェクトを回そうと思ったのでこっちのlaradock.exampleの方を変えた。詳しくは複数プロジェクトを作る記事で解説する。ふーんくらいでいいと思う。
(この2つの違いはいまいちわかってない。)

localhostにアクセスしてlaradockプロジェクトを表示させる。

さあここまできたら、後はlocalhostにアクセスして表示させよう。そしてその前に、コンテナを止めてまた起動しよう。.envを編集した後はdocker-compose stopでコンテナを止めて、またupで起動させる必要がある。(restartだとうまくいかなかった。)
.envを設定した後はキャッシュがどうとか色々あってよくわからんが、再起動してlocalhostにアクセスしたら表示されたので、いけない人は調べて。(php artisan config:clear キャッシュをクリアするコマンド)
表示された人はおめでとう!後、もう少しだけ頑張ろう。

2020.11月現在最新のlaravelだ。

laradockの.envでデータベースの設定をしよう。

さっそくLaravelで色々作るぞ〜と思うかもしれないが、ここからはデータベースの設定をしないといけない。
laradockの.envを開いてDATA_PATH_HOST=~/.laradock/dataの部分の~/の部分を外そう。これは、何をしているかというとデータが保存される場所を変更している。~というのは、ホームフォルダのことでmacのパソコン本体にログインした後の場所のことだ。(だいたいは自身のユーザー名のフォルダ)
ファインダーで確認するなら、ファインダー→移動→ホームで移動できる。初期値だとこのホームフォルダ上にdataができる。これは、今後もLaravelプロジェクトを作る時に保存先が被って面倒臭いエラーの原因になるので、保存先を変えておこう。

初期値だと~/.laradock/data
~/を外して、自身のlaradock上にdataフォルダを作ってそこに保存されるようにする。
手順12まで終わったら、VSコードで.laradock/dataフォルダができていることを確認してみよう。
ここにデータが保存されていく。

このDATA_PATH_HOSTを変更する手順はサイトによって色々なやり方があるが、ここを変更している時はデータの保存先を変更しているんだなと理解しよう。

そしたら一旦、phpMyAdminにアクセスしてみよう。
http://localhost:8081にアクセスするとphpMyAdminにアクセスできる。サーバー名にmysqlを指定して、ユーザー名とパスワードを入力。ユーザー名とパスワードはlaradockの.envのPMAを確認しよう。ログインできるはずだ。

サーバー名はmysqlを入力
初期のユーザー名はdefault パスワードはsecretだ。

Laravelプロジェクト側の.envのDB名を変更する。

後すこし!今度はLaravelプロジェクト側の.envを変更する。注意して欲しいのはlaradock側ではなく、Laravelプロジェクト側の.envファイルを修正するということだ。手順10でやったのはlaradock側。
ここをlaradockの.evn側に書かれてるのと同じように修正する。見本がlaradockの.env 、真似する方がLaravelプロジェクトの.envだ。間違えないように修正しよう。どこを修正するかというと、MySQLの各項目。

laradockのMySQLの設定。これを見本に、、
DB_HOST・DB_DATABASE・DB_USERNAME・DB_PASSWORDを上のように変更する。

php artisan migarateを行う。

いよいよ最後だ。設定を変更したら、php artisan migrateを行う。artisanコマンドはworkspace内に入って行うぞ。どうやってworkspaceに入るか覚えているだろうか?laradock上でdocker-compose up exec workspace bashだ。

workspaceに入ったらphp artisan migrateを行おう。workspaceのどこでartisanコマンドを打つか、これはartisanファイルがあるところと覚えれば間違えにくいぞ。ターミナルでlsコマンドを打てば、そのフォルダにどんなフォルダやファイルが入っているかが分かる。今自分がどこにいるかわからなくなったら使ってみよう。

Laravelプロジェクトの中にはたくさんファイルが入っており、artisanファイルも入っている。
つまり、artisanコマンドを打つところはLaravelプロジェクト上でだ!
コンテナ内のLaravelプロジェクト上でコマンドを叩く。



migrateとは何をしているか?これは、Laravelのマイグレーションという知識が必要だから最初はわからなくても問題ない。とりあえず、このコマンドを打つ事で、何もないデータベースにテーブルが作られるんだ。(もともとLaravel側でuserテーブルが作られるように設定してある。)
migrationに成功したら、phpMyAdminにアクセスしよう。(http://localhost:8081)

マイグレーションの作成に成功したらこう表示される。

phpMyAdminにアクセス成功したら、中を確認してみてほしい。きっとusersテーブルができているはずだ。

こうなっていれば、成功だ!

ちなみに、手順11のLaravelプロジェクト側の.envを書き換えなかった場合、php artisan migrateが失敗してしまう。これができないと、Laravelプロジェクト側でデータベースが作れないので気をつけよう。

Laravel側の設定をしないと、php artisan migrate が失敗する。


これで、webサーバー・phpMyAdmin・mysqlはそれぞれうまく繋がったはずだ。
お疲れ様です!やっとここからプロジェクトの開発できるぞ!

終わりに

自分は1個プロジェクトを作った後に次のプロジェクトで、「あれ?どうやって新しいプロジェクトを作るんだろう」と悩んで沼にハマってしまった。一つのlaradockで複数のLaravelプロジェクトを動かそうとしたことが沼の原因。そのやり方はまた上げます。

また、「今日の作業はここまで、プロジェクトを終了!」とした次の日などに作業を再開する時、「あれ、、どうやって起動するんだ?」って焦る人、一旦落ち着こう。
まずはdockerを起動。これ動かさんと始まらん。そして、ターミナルでlaradockまで移動してdocker-compose-up 『動かしたい奴(niginx mysql phpmyadmin)』で復活だ!
localhostとlocalhost:8081にアクセスして動いているか確かめよう。

ここまで本当にお疲れ様でした。初心者が書いてるので、同じ初心者には伝わりやすいと思います。たぶん、合ってるはず、、、。プロの方もし、ここ違うよってのあればどうかわかりやすく教えていただければなと思います。
初心者の方の少しでも参考になれば幸いです。


間違いやすいポイント・注意するべきポイント

・docker-composeはlaradock上でいじってる?
・.envはlaradockの?それともLaravelプロジェクト?
・workspaceに入って行うコマンドは、Laravelプロジェクトをつくるcomposerコマンドとartisanコマンドだ。
・MAMPとかXAMPP閉じてる?
・.envを変更したのにうまく反映されない!→一回docker-stop後にまたupする。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次