WSL2 + Docker Compose で開発環境用意した話
Xubuntuが乗ったThinkPad X230のブートが怪しい感じになってきた1。
X230を購入したのが2012年秋頃だったはずなのでかれこれ8年ほど使ってることになる。
そろそろガタが出始めてもおかしくはないのかもしれない。
(忙しいときに限ってこういうことは起こる。)
これが万全に動作するのを前提に開発を進めるのはさすがにちょっと怖いので、ひとまず別で使ってるWindowsマシン(ThinkPad X1 Yoga)を開発用にセットアップすることにした。
WSL2が良さげとのウワサなのでWSL2 + Docker Composeで開発環境構築してみたらわりとすんなり用意できちゃってすごいねえというログ。
WSL2のインストール
公式の手順で問題なくいける。
LinuxディストリビューションはUnbuntu 20.04を選択した。Windowsターミナルは試してない。
LinuxカーネルをエミュレートしていたWSLと違って、WSL2はVM内で完全なLinuxカーネルを実行するとのこと。 VMといっても立ち上がりは高速で全然ストレスない。しゅごい。
Docker Composeのインストール
WSL1だとDocker for Windowsが必要で、Hyper-Vが必要で、VirtualBoxが共存できなくて…みたいな感じで諦めたんだけど、WSL2ならVMでLinuxカーネルが動いてるので普通にDockerが入るらしい。しゅごい。
これも公式の手順で問題なくいける。
あとはgit入れて、emacs入れて、とかその他諸々必要なモノを入れたら普通に開発できる環境が整った。しゅごい。
落とし穴がないわけではない
まったく順調に環境が整ったかというとそうでもなくて、いくつか問題はあった。
DNSの設定の問題
Dockerコンテナ側でライブラリのインストール時に名前解決できなくて失敗する、みたいなことが起きるので調べてみたら、WSLが自動で仮想ネットワークのDNS設定を生成しててそれが不調を起こすみたいな話らしかった。 以下の手順で解決した。
WSL2 DNS issues · Issue #5256 · microsoft/WSL · GitHub
systemctl動いてない
systemdがPID 1で動いてないからダメとのこと。
デーモンが動いてくれないのでいろいろ困る。Dockerもいちいち手で sudo service docker start
みたいなことしなければならない。
Blockers for systemd? · Issue #994 · microsoft/WSL · GitHub
genieを使うなどの解決方法は提示されてるようだけど、様子見中。
ホスト側のPATHを引き継がせない
デフォルトではWSL側からWindowsのアプリケーションを実行できたりするようになってるのだけど、開発用途には分離できてた方が都合が良かろうと思ったので無効にした。
[interop] appendWindowsPath = false enabled = false
あとはなんだっけ。思い出したら書く。