初心者向け。Dockerを使ってLaravelの環境構築をする方法
2699 回閲覧されました
みなさんこんにちは、jonioです。
今回はLaravelの環境構築にDockerを使う方法を解説します。
私自身がDockerをちゃんと把握している訳ではなく色々調べている状態ですがプログラミング初心者の方はとりあえず使えればいいと思います。
目次
プログラミングを始めたばかりの人へ
Twitterを見ると環境構築にDockerを使おうと頑張っている人を多く見かけますが多分みんなが使っているからDockerを使っていると思います。
でも一番簡単な環境構築の方法はMAMP(WindowsはXAMMP)だと思います。
また、最初にLaravelのプロジェクトを作った時にデータベースにアクセスするのに「php artisan migrate」を使いますがネットの記事がぐちゃぐちゃに混ざっていて上手くいかなくて挫折する可能性があります。
だから環境構築にこだわりがないならMAMPが楽なのでMAMPを使いましょう。
私も最初はMAMPですが本当に楽で環境構築につまずく事は多分ないと思います。
Dockerのメリット
私が調べた限りですがDockerを使うとコンテナごとに環境構築ができるので色んなバージョンのコンテナを作る事ができます。
コンテナはプロジェクトを格納する箱みたいなイメージです。
MAMPだとPHPのバージョンを例えば8にしてプロジェクトを作ったら他のプロジェクトもPHPのバージョンが8になり変更する事ができなくてかなり使いにくいですがDockerなら色んなバージョンのコンテナを作れて便利です。
プログラミングを始めたばかりの人はプロジェクトを複数作る事はない(そんな能力がない)と思うのでいいと思いますが。
プロジェクトの最終的な構成
それではプロジェクトを作成しますが最終的な構成は↓です。
大元のフォルダの作成
一番左側のフォルダを「laravel-docker」としますがお好きな名前をどうぞ。
docker-compose.ymlの作成
ターミナルでlaravel-dockerに移動して(cd laravel-docker)docker-compose.ymlというファイルを手動で作成してください。
docker-compose.ymlは複数のコンテナを管理するためのファイルです。
docker-compose.ymlに↓の記述をします。
php > php.iniの設定
laravel-dockerの下にdockerフォルダを作ってその下にphpフォルダを作ってその下にphp.iniを手動で作成します。
そしてphp.iniに↓の記述をします。
php > Dockerfileの設定
先ほどのphpフォルダの下にDockerfileを手動で作成します。
Dockerfileはコンテナの素になるイメージを作成します。
そして↓の記述をします。
nginx > default.confの設定
dockerフォルダの下にnginxフォルダを作ってその下にdefault.confファイルを手動で作成します。
default.confに↓の記述をします。
コンテナの立ち上げ
これでコンテナを立ち上げる準備ができたのでコンテナの立ち上げをします。
ターミナルで大元のフォルダ(laravel-docker)に戻って「docker-compose up -d」を叩きます。
成功したら「docker-compose ps」を叩いてください。
Stateが3つともUpになったら成功です。
Laravelのプロジェクトの作成
「docker-compose exec app bash」を叩いてDockerのコンテナに入りますがターミナルの表示が↓になります。
Laravelのプロジェクトを作成しますがコマンドを↓にします。
「docker-demo」がLaravelのプロジェクト名ですが名前は好きに決めて下さい。
コマンドの中にある「8.*」はバージョンが8系という意味です。
この記事を書いているのが2023年2月ですがバージョンは一番古くて8系がいいです。
8系からルーティングの書き方が変わるのですがLaravelを始めたての方が7系をやるとコードの書き方が以前の書き方なので混乱するかもしれません。
ネットやYouTubeの解説動画を見ると5系とかもあって古すぎるので注意しましょう。
無事にプロジェクトができるとlaravel-dockerフォルダの直下にLaravelのプロジェクトは作成されます。
ブラウザで確認
「http://localhost:8000/」にアクセスすると↓の画面が表示されます。
php artisan migrate
Laravelのプロジェクト作成してから最初にしないといけないのがこれですが何かと言うと自分が作ったLaravelのプロジェクトをデータベースに接続するための手続きみたいな物です。
php artisan migrateをする前に設定をしないといけないのですがこれを間違える人が多くエラー地獄になって挫折する可能性があるので設定を間違えないようにしましょう。
作成したLaravelプロジェクトの直下に「.env」ファイルがありますのでvscodeなどで開いて下さい。
隠しファイルになっているのでフォルダから直接開こうとしても表示されていません。
ここまでの設定を全て私と同じにした方は↓をコピペでいいです。
設定で名称を私とは違う名前にした場合は設定するのは12行目と14行目〜16行目です。
docker-compose.ymlに合わせます。
12行目の「db」ですが↓です。
14行目の「database」は↓です。
15行目の「db-user」は↓です。
16行目の「db-pass」は↓です。
これが終わったら「php artisan migrate」をします。
成功なら↓の表示になります。
もし↓の表示になったらデータベース接続エラーなので設定を間違えてないかを確認して下さい。
これで完成です。
Dockerを止め方
「exit」でコンテナから出る事ができます。
そして「docker-compose stop」でDockerの起動を終了します。
これをしておかないと他のコンテナを立ち上げた時にエラーになります。
Dockerの起動を止めたら↓の表示になります。
Git
環境構築につまづいた場合は今回のGitのコードを公開しますのでここからクローンして使って下さい。