2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel11の開発環境をDockerで構築する方法

Posted at

久々にLaravelを使う(前回使ったのは6系だったな?)ので、備忘録を残します!
今回はDockerを使って環境を構築してみたいと思います!

環境

  • WSL2
  • Laravelは11系を使用
  • PHPは8.2系にアップデート済み
  • DockerはDocker Desktop for Windowsを利用

PHPが7系で8系にアップデートしたい方はこちらを参考にしてください

Laravelプロジェクトの作成

まずはcomposerを使ってLaravelプロジェクトの作成を行います。
開発を行うディレクトリに移動して次のコマンドを実行します。

composer create-project laravel/laravel hoge-app

※WSL環境で開発を行う場合、プロジェクト作成の場所は結構大事になってきます! 推奨は~/以下です!
理由に関してはこちらの記事を参照

Laravel Sailのインストール

Laravel Sailとは、Laravelの開発環境をDockerを利用して簡単にセットアップできるツールです。
これを入れる事により、DockerでLaravelを動かすために必要なものを全て入れてくれて、Dockerの知識がなくても簡単にLaravelの開発環境を準備することができます。

インストールするために作成したプロジェクトにcd hoge-appで移動します。
その後、Laravel Sailをインストールします。

php artisan sail:install

↑のコマンドを実行すると
image.png

Which services would you like to install?

と聞かれるので該当するものを選びましょう!今回はmysqlを選択しました!

プロジェクトを起動してみる

Laravel sailのインストールが無事完了すると次のような画面が表示されます。
image.png

./vendor/bin/sail up
./vendor/bin/sail artisan migrate

ここにあるように、これらのコマンドを実行します。

まずはプロジェクトの立ち上げるために

./vendor/bin/sail up

を実行します。
このコマンドでDockerコンテナが立ち上がらり、Laravelの開発に必要になるWebサーバーやデータベースなどのサービスが実行されます!

問題がなければDocker Desktopの方でも該当プロジェクトのstatusがRunnningとなり起動していることを確認できると思います!
image.png

マイグレーションを実行

次にマイグレーションを実行するために

./vendor/bin/sail artisan migrate

を実行します!
先ほどコマンドを実行した画面はログがでているので、新しくターミナルを開きそこで実行してください。

ポートの変更

これで通常localhostにアクセスするとLaravelの画面が表示すると思うのですが、私の場合WSLでApacheなどのwebサーバーがすでにあるため、localhostにアクセスしてもこのプロジェクトが表示されることがありません。
なので、このプロジェクトのポート番号を設定してあげる必要があります。

具体的には

  • docker-compose.yml
  • .env
    の2つのファイルで設定を追加します

docker-compose.ymlの変更

こちらのファイルのservices.laravel.test.portsの項目を探し任意のポート番号に変更します
デフォルトでは
'${APP_PORT:-80}:80'となっていると思うので、この-80の部分を任意の数値に変えます

docker-compose.yml
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.3
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.3/app
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - '${APP_PORT:-8888}:80'

.envに追加

.envには新たにポートの設定を追加します。
docker-compose.ymlで設定したポート番号と同じ番号を設定してください!

.env
APP_PORT=8888

コンテナの再起動

ここまで設定したらSailコンテナを再起動する必要があります!
コンテナの停止と起動は

./vendor/bin/sail down
./vendor/bin/sail up

でしたね!
ここではこれまでの順序通りにやっていたとしてもう少し詳しく説明します。
先ほど./vendor/bin/sail upで開いていたターミナルを開き、Ctrl + cで実行を中断させましょう。
そうすると

Gracefully stopping... (press Ctrl+C again to force)
[+] Stopping 2/2
✔ Container hoge-app-laravel.test-1 Stopped 0.8s
✔ Container hoge-app-mysql-1 Stopped

となるはずです。

次にコンテナを停止させます。

./vendor/bin/sail down

でSailコンテナを完全に停止させます。

./vendor/bin/sail down
[+] Running 3/3
✔ Container hoge-app-laravel.test-1 Removed 0.0s
✔ Container hoge-app-mysql-1 Removed 0.0s
✔ Network hoge-app Removed

となったら完了です。

その後、再度コンテナを起動します

./vendor/bin/sail up

を実行します。
補足ですが、

./vendor/bin/sail up -d

のように末尾に-dを付けることにより、バックグラウンドで実行(デタッチモード)することも可能です!
ログなどを見たい場合には-dを付けないで実行し、ターミナルをそのまま他の作業でも使いたい場合には-dをつけて実行するといいと思います!

その後、localhost:8888にアクセスしてLaravelの画面が表示されたら無事作業完了です!

./vendor/bin/sailって打つの面倒くさい

ここまで作業してきて思った方いるでしょう、そう、./vendor/bin/sailって毎度入力するの面倒くさい・・・
そんな方に朗報です、エイリアスを登録しましょう!
ご自身の環境に合わせて.bashrc.zshrcなどに次のエイリアスを登録します

alias sail='[ -f sail ] && sh sail || sh vendor/bin/sail'

これを追加すると、今まで./vendor/bin/sail upと入力していたのが、sail upで完結します!
.zshrcなどを更新したらsource ~/.zshrcをして再読み込みをするのをお忘れなく!

終わりに

初Dockerだったのですが、ここまで簡単に構築できてびっくりです。
逆に、Dockerの設定を自分で全くしていないので、これを自分で設定しなければならないとなると、ちょっと怖いですね!
今後の課題ということで、やりながら覚えていきます!

参考サイト

Laravel11系インストール
Laravel Sail

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?