初めまして!
スクールではRuby on Railsを学習。
就活の関係でPHPの学習始めたばかりです。
初めて1からLaravelで作成するので記録を残します。
DockerでLaravelの開発環境を作成
これに関してはこちらの記事を参考にというかもうそのまま使わせて頂きました!
大変わかりやすかったです。
ありがとうございました!
ユーザー認証導入
ユーザー登録やログイン機能の実装です。
Railsだとdeviseで簡単にできるイメージでしたが結構つまりました。
Dockerというのが理解が追いついていないので難しかったです。
まずコンテナ内に入ります
% docker-compose exec app bash
コンテナ内でユーザー認証導入のコマンドを入力します
composer require laravel/ui
ここで下記のエラーが発生しました。
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes)
調べると「メモリ不足なのでインストールできないよ」とのこと。
なので
COMPOSER_MEMORY_LIMIT=-1 composer require laravel/ui
上記のコマンドは一時的に容量を無制限にするコマンドのようです。
こちらの記事を参考にさせていただきました!ありがとうございます。
vue.jsを元にしたテンプレートの認証機能を追加します
php artisan ui vue --auth
下記のように出れば成功です。
Vue scaffolding installed successfully.
Please run "npm install && npm run dev" to compile your fresh scaffolding.
Authentication scaffolding generated successfully.
これでvue.jsを書く初期状態が完成。
app/Http/Controllers/Auth
にはバックエンドでの認証機能関係のファイルが追加されます。
resources/views/auth
にはフロントエンド関係のviewファイルが追加されます。
ここまでで一旦は認証機能の導入が終わりましたが、まだ表示が崩れたままです。
画面を整えるためNode.jsのパッケージ管理ツールをインストールします。
npm install && npm run dev
そうすると
npm: command not found
とエラー。
Node.jsのインストールしてなかったからみたいです(それはそうですね)
公式からインストールし再実行するも変わらず。
インストールの確認のためコンテナから出て
which node
と入力すると/usr/local/bin/node
と出力され
npm -v
と入力すると6.14.10
と出力されるがコンテナ内で行うと出てこないのでコンテナ内にNodeが存在しないことが原因と分かりました。
コンテナ内に反映させるため,php/Dockerfile
のWORKDIRの前に以下を追加します。
COPY --from=node:12.20 /usr/local/bin /usr/local/bin
COPY --from=node:12.20 /usr/local/lib /usr/local/lib
コンテナから抜けてビルドし直します。
docker-compose up -d --build
このあと再度コンテナ内に入りnpm install && npm run dev
で無事完了。
public/js
とpublic/css
に新しいファイルが生成されます。
リアルタイムでコンパイルさせる
phpのコンテナ内で
npm run watch-poll
を実行することでコードを書きながらでもリアルタイムでjsがコンパイルされ画面が反映されます。
完成
以上です!
ご指摘などございましたらよろしくお願い致します!