はじめに
AWSのDockerコンテナを起動したら"Serverless plugin "serverless-webpack" not found."のエラーがでました。
エラー文でググっても意外と載っていなかったので、こちらに残しておきます。
環境は下記です。
環境: WSL2
Docker: v28.1.1
Node : v14.21.3
原因
serverless-webpackプラグインはserverless.ymlのpluginsセクションに記載されていたものの、node_modules配下にインストールされていなかったというのが原因でした。
plugins:
serverless-webpack
プラグインがインストールされているかは、下記コマンドで確認できます。
npx serverless plugin list
ただし、ホスト側(WSLやWindows)でインストールしても、コンテナ内にnode_modulesやプラグインが存在しない場合、今回のようなエラーが出ます。
したがって、コンテナ内でこれらをインストールしてあげる必要があります。
手順
該当のコンテナ内でserverless-webpackをインストールします。
npm install
yarn add --dev serverless-webpack
今回のエラーでDockerが起動できずコンテナに入れない場合は、下記コマンドでdocker run時にシェルでコンテナに入りましょう。
docker compose run -it --entrypoint /bin/bash aws-dev
npm install
yarn add --dev serverless-webpack
おわりに
ホスト側でインストールしていても、コンテナ側では適用されない、という初歩的なミスでした。(ホストとコンテナは全く別の環境です。)
Dockerのファイルに依存関係をインストールする設定を追加していたのですが、コンテナ立ち上げ時にうまく動かなかったようです。