😭

WSLの環境構築の闇

2023/10/07に公開

対象読者

  • WindowsでWSLで開発したい方
  • WSL + Dockerの環境構築で詰まった方

まえがき

WSL + Windowsでの開発環境構築は沼です!

環境

  • Windows10 Pro
    • version - 22H2
  • WSL2
    • distro - Ubuntu
  • Docker Desktop for windows
    • version - 4.24.0

事象1

コンテナが再起動を繰り返す

  • "General > ""Use WSL 2 based engine" を指定した Docker Desktop for WindowsでMySQLのコンテナが起動してもすぐに "Restarting" になる
  • 同じ環境で同じように起動したNodeJsサーバ正常に "Running" になる
  • NodeJsサーバにWindows側からpostmanやcURLでリクエストを送ると正常にレスポンスが返る

事象2

以下のエラーでコンテナが起動しない

docker: Error response from daemon: bind source path does not exist: \wsl.localhost\ubuntu2004-1\run\user\0\wayland-0.
  • マウント周りで不明なファイルが作られている
  • Windows上からもWSL上からも削除できない
  • WSL上でパーミッションを確認すると???になっている

事象3

docker-compose.ymlのvolumesの初期化スクリプトがマウントされない

    volumes:
      - ./db/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./db/sql:/docker-entrypoint-initdb.d

解決法

  • 以下のコマンドで、WSLのディストリビューションを変更する
wsl --list

# 結果
#
# Ubuntu(既定)
# docker-desktop
# docker-desktop-data
wsl -s docker-desktop-data
  • docker desktopを再起動する

原因

  • マウント関係の権限
  • WSL側からWindowsのファイルシステムにアクセスできない

まとめ

新しく参画したプロジェクトの開発環境構築で詰まったポイントの解決法を記事にまとめました。
同じくWindowsでWSLで開発したいという方の参考になれば幸いです。

Discussion