docker、Laravel9環境にて、認証機能(ログイン機能)を作成する際、node.jsの問題が発生したので、その問題を修正する方法

# 概要
表題にも書いた通り、Laravel9にてログイン機能を実装しました。
laravel9では、`composer require laravel/ui`、`php artisan ui bootstrap --auth`のコマンド叩く事でログイン機能が簡単に作成できるみたいです。ただ、これらのコマンドを使用するには、`node.js`　関連をインストールする必要があり、そこで凄く詰まったので、その修正方法を説明したいと思います。

# 修正方法
laravel9では、`php artisan ui bootstrap --auth`のコマンドを叩いてログイン機能を作る場合、`node.js`が必要(bootstrapの影響だと思われる)との事です。その為、`dockerfile`に`node.js`関連をインストールするコードを付け加えました。下記がその`dockerfile`です
```dockerfile:
FROM php:8.1.13-bullseye

RUN apt-get update && apt-get install -y \
    git \
    vim \
    zip \
    unzip \
    autoconf \
    gcc \
    g++ \
    make \
    curl \
    gnupg \
    nodejs \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

RUN curl -fsSL https://deb.nodesource.com/setup_10.x | bash -
RUN apt-get install -y nodejs
RUN npm install npm@latest -g

RUN docker-php-ext-install bcmath pdo_mysql
RUN cd /usr/bin \
    && curl -s http://getcomposer.org/installer | php \
    && ln -s /usr/bin/composer.phar /usr/bin/composer

RUN mkdir /app
WORKDIR /app

CMD ["/app/start.sh"]
```
ただ、これだけでは正常に動作しない事を分かっていたので、コンテナー内に入り`npm install && npm run dev`を叩きましたがそれでも正常に動作しませんでした。その時表示されたエラー分が下記の状態となります。

```sh:エラーメッセージ
ERROR: npm v9.2.0 is known not to run on Node.js v12.22.12. You'll need to
upgrade to a newer Node.js version in order to use this version of npm. This
version of npm supports the following node versions: `^14.17.0 || ^16.13.0 ||
>=18.0.0`. You can find the latest version at https://nodejs.org/.

ERROR:
/usr/local/lib/node_modules/npm/lib/utils/exit-handler.js:22
  const hasLoadedNpm = npm?.config.loaded
                           ^

SyntaxError: Unexpected token '.'
    at wrapSafe (internal/modules/cjs/loader.js:915:16)
    at Module._compile (internal/modules/cjs/loader.js:963:27)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at module.exports (/usr/local/lib/node_modules/npm/lib/cli.js:76:23)
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:2:25)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
```
エラー文を見ると、`npm v9.2.0`と`Node.js v12.22.12`のバージョンでは、正常に動作しないとエラー文が言うてますので、`node.js`のバージョンを上げるようにdockerfileの修正を試みました。
しかし全然、`node.js`のバージョンが上がらない為、途方に暮れていた時、[Ubuntu 20.04にNode.jsをインストールする方法](https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-ja)　の記事を眺めていたら、`node.js`のバージョンの上げ方のヒントが書かれていたので、早速試して見ました。
ちなみに、`node.js`のバージョンが上がらなかった根本の原因は下記の記述でした。

```dockerfile
RUN curl -fsSL https://deb.nodesource.com/setup_10.x | bash -
```
`setup_10.x`と書いてあったので、かなり古い`node.js`のバージョンをインストールしていたみたいです。
[NodeSource Node.js Binary Distributions](https://github.com/nodejs/node)を確認して、指定のバージョンの`node.js`を取り込む方法を見つけ、`dockerfile`に追加しました。
下記が修正したコードとなります。

```dockerfile
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
```
少しの修正でしたが、凄く勉強になりました。

# 感想
バージョン管理はシビアに行わないといけないと改めて痛感しました。この教訓を生かして、バージョン管理関連の問題はサクッと修正していきたいと思います。

# 参考資料
- [NodeSource Node.js Binary Distributions](https://github.com/nodejs/node)
- [Ubuntu 20.04にNode.jsをインストールする方法](https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-20-04-ja)