【WSL】「開発コンテナーに再接続しています」というループを解消したい
おはようございます。タカヒデです。
WSLでコンテナに接続する際、「開発コンテナーに再接続しています」という無限に続くループが発生しました。
この事象を解決することができたので方法を紹介していきます。
事象:「開発コンテナーに再接続しています」という無限ループ
今回事象が起きた環境は以下の通りです。
- WSL2 + Docker環境
- 「フロントエンド:Next.js」と「バックエンド:Django」を別コンテナで同時起動
この状態で「yarn dev」でNext.jsを実行すると以下の表示が発生します。
VSCodeの右下で「開発コンテナー:Untitled Node.js projectに再接続しています…」の表示。

そして「切断されました。再接続を試みています…」の表示。

ここまで来たら、実行されることはありません。
ちなみに、今回の事象は【実装で学ぶフルスタックweb開発】という技術書の「第6章 バックエンドの実装とフロントエンドとのシステム連携」において発生しました。

フロントエンドからバックエンドのデータを参照しようとした際に起こった事象です。
原因:WSLに割り当てられているメモリ不足
原因は単純なモノでした、「WSLに割り当てられているメモリ不足」です。
もともと私のPCは安いものを買ったのでメモリ8GB。
そしてデフォルト設定のままWSLを構築したのみ。
まずは現時点のWSLに割り当てられたメモリを確認してみます。
WSLを立ち上げ、ターミナルで以下を実行します。
free -h
WSLに割り当てられたメモリは「3.5GB」、そしてNext.jsを実行しなくても「1.8GB」使っている状況だったんですね。
対策:WSLに割り当てるメモリの上限を増やす
では実際に、WSLに割り当てるメモリの上限を増やしていきましょう。
①「.wslconfig」ファイルの作成
エクスプローラーから、「C:\Users\terat」直下に「.wslconfig」というファイルを作成します。

「拡張子を変更すると、ファイルが使えなくなる可能性があります。変更しますか?」と出てきても「はい」を選択してください。
②割り当てるメモリの設定
作成した「.wslconfig」を開き、割り当てるメモリを設定していきます。
以下のテキストを追加して保存してください。
[wsl2]
memory=5GB
processors=4私は5GBを割り当てていますが、ご自身のPC本体のメモリに応じて変更してください。
③WSLを再起動
WSLを再起動してください。
④WSLに割り当てられたメモリが増えているか確認
最後に正しくメモリが増えているか確認してみましょう。
サイドWSLを立ち上げ、ターミナルで以下を実行します。
free -h
こんな感じで、元々「3.5GB」だったメモリが「4.8GB」に増えていることが分かりますね。
実際に「フロントエンド:Next.js」と「バックエンド:Django」の連携ができているのかも確認してみます。


うん。
問題なさそうですね。
以上が「開発コンテナーに再接続しています」というループを解消する方法。
および、WSLのメモリを増やす方法でした。
なお、私はこの事象が発生した際に、WSLのメモリ不足という考えに至らず、コードの誤りをずっと探し続けていました…
お恥ずかしいかぎりですが、誰かの参考になれば幸いです。
お疲れさまでした。
