【Laravel Sail】Sailを使って構築したLaravelプロジェクトをgit cloneした時の環境構築手順と詰まったところ

こんにちは。ゆうきです。
Laravel Sailはコマンド一発で必要なdockerのコンテナを作ってくれたりと便利ですよね〜。

ただ、今回自宅で使っているメインPCとは別のMacbookで開発しようとしたところ、環境構築に意外と手間取ったので備忘として環境構築の手順と、詰まったところを残しておこうと思います。

環境構築手順

まずはざっくりと手順を記載します。

  1. gitから対象のリポジトリをクローンしてくる
  2. Laravelプロジェクトのルートディレクトリに入って、必要なファイル達をダウンロードする
  3. .envファイル設定する
  4. コンテナをビルドして立ち上げる

こんな感じの手順です。
以下ステップごとに詳しく手順を残していきます。

STEP1:gitから対象のリポジトリをクローンしてくる

何はともあれリポジトリをクローンします。
git clone コマンドでプロジェクトをダウンロードします。

STEP2:Laravelプロジェクトのルートディレクトリに入って、必要なファイル達をダウンロードする

さて、Laravel Sailではデフォルトでvendor配下のファイル達は.gitignoreに指定されています。
つまりgitからクローンしてきただけではLaravel本体はまだインストールされていない状態になっています。

プロジェクトのルートディレクトリに入ってから、下記コマンドでLaravelの本体と、その他必要なファイルをダウンロードしましょう。

CMD
docker run --rm \
    -u "$(id -u):$(id -g)" \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    laravelsail/php82-composer:latest \
    composer install --ignore-platform-reqs
上のコマンドでエラーが起きたら

上のコマンドはLaravel9のプロジェクト用のコマンドです。

8.x系は下記URLに載っているコマンドを使用してみてください。

https://laravel.com/docs/8.x/sail#installing-composer-dependencies-for-existing-projects

STEP3:.envファイル設定する

さて、お次はSailがコンテナをビルドする際に使用する.envファイルを設定していきます。

基のPCで使用していた.envファイルを配布できるなら、配布した.envファイルをプロジェクトのルートディレクトリ配下に設置するだけで済むのですが、今回はデフォルトで用意されている.env.exampleファイルを使用した設定方法を記載します。

まずは下記コマンドで.env.exampleファイルをコピーします。

CMD
cp .env.example .env

そして作成された.envファイルのDB設定関連の箇所を下記の通り設定します。

.env
... 省略
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=hoge
DB_USERNAME=sail
DB_PASSWORD=password
... 省略

設定する項目は4項目です。

特に重要なのはDB_HOSTとDB_USERNAMEです。

DB_HOSTはデフォルトでは「127.0.0.1」に設定されているので、これをmysqlと設定して、mysqlコンテナを見に行くように設定します。

また、DB_USERNAMEも最初は「root」と設定されていると思いますが、ここもrootのままだと動かなかったので、他のユーザー名に変更しておきます。

その他変更が必要なところがあれば都度編集してください。

この手順を飛ばさないで!

.envの設定を行う前にsailでコンテナビルドするとDB接続が上手くいかない不具合が発生します。

理由は単純で、sailでコンテナビルドをする際に.envの設定内容を基にコンテナをビルドするからです。

なので、先にコンテナをビルドして後から.envの設定を変更しても上手く接続できません。

必ず先に.envの設定を完了してから、次の手順に進んでください。

STEP4:コンテナをビルドして立ち上げる

ここまでできたらあとは下記コマンドでコンテナをビルドするだけです。

CMD
./vendor/bin/sail up

これでlocalhostにアクセスするとアプリが起動していることが確認できると思います。

「No application encryption key has been specified.」エラーについて

localhostにアクセスした時に下記画像のようなエラー画面が表示されるかもしれません。

エラー画面

これは.env設定時にAPP_KEYの設定をしなかった場合に表示されます。

アプリの暗号化等に必要なキーが設定されてないというエラーですね。

対象方法は簡単で、エラー画面の右に表示されている「GENERATE APP KEY」ボタンをクリックして、画面をリロードするだけです。

このボタンをクリックするとLaravelが自動でAPP_KEYを設定してくれます。

サンキュー!Laravel!!

詰まったところ

自分の場合は.envを設定する前にコンテナをビルドしてしまったので、DB接続関連でエラーが出まくって詰まりました。
今回記載した手順の通りにやることで、今後不要なエラーが避けれると思う。。。

まとめ

Laravel本体はgit cloneとは別にインストールする必要がある。
あとコンテナビルド時に.envの設定を参照しているから、先に.envを設定しよう!

ということで、現場からは以上です〜。

ゆうき

都内某企業でWebエンジニアをやっている人。 普段はPHPとJavaScriptを使って業務を行ってます。 プライベートでは好き勝手にアプリや3DCGを作る個人サークルのStudio Babeをやっています。

1 COMMENT

https://buecherplaza.de/

I am extremely impressed with your writing skills as well as with the layout
on your blog. Is this a paid theme or did you modify it yourself?
Anyway keep up the excellent quality writing,
it is rare to see a great blog like this one these days.

返信する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です