WSL2 + VSCode + Dockerで気持ちの良い開発環境を手に入れる
皆さんお待ちかねのWSL2がいよいよ2020年4月のアップデートで来ます。
WSL2の詳細は各自調べて頂きたいのですが、個人的にはDockerが動くようになることが一番大きな嬉しさです。
Dockerが動くとなると、 VSCode Remote Containerを使って、Windows10上のVSCodeからコンテナにアクセスして直接開発ができるようになります。Dockerコンテナに開発環境と動作環境を収めることで、ホストマシンを汚すことなく環境の構築ができます。これはかなり快適です。
また、今回はPythonをターゲットに据えていますが、 C++だろうとGoだろうとRustだろうと、Docker上に環境を作ってしまえば何でもいけます。強い。
WSL2はまだ正式にリリースされていませんが、ひと足先に試してみましょう。
というわけで、WSLすら入っていない素のWindows10 Homeを、WSL2 + VSCode + Docker で Pythonの開発ができる環境に仕立てて行きます。
環境
Windows10 Home
手順
WSL2のインストール
以下のドキュメント通り進めていきます。
WSL 2 のインストール | Microsoft Docs
基本的には上記ドキュメントのとおりに進めればよいはずですが、一部トラブりました。
wsl --set-version <Distro> 2
のコマンドで、ディストリビューションのVerを切り替えようとしたのですが、うまく切り替わりません。
何やら怪しげなメッセージが出ています。カーネルを更新しろとのこと。
メッセージにあるURLにアクセスしてみます。
WSL 2 Linux カーネルの更新 | Microsoft Docs
更新プログラムをダウンロードして、インストールします。
インストール後、Powershellを再起動し再度ディストリビューションのVer切り替えにチャレンジします。
成功しました!
Docker Desktop for Windows Home のインストール
WSL2のカーネルを使ったWindows上でのDocker実行をサポートした Docker Desktop for Windows Home をインストールします。
こちらも2020/04/12現在まだ安定版ではありませんが、ガンガン行きます。
Docker Desktop for Windows Home is here! - Docker Blog
上記記事のこのあたりから、インストーラをダウンロードしてインストールします。
インストールが完了したらWindowsを再起動します。その後、PowerShellを起動してDockerのhello-worldしてみましょう。
Windows 10 Home でDockerが使えている! この時点で少し感動モノです。
VSCode Remote Container を使ってコンテナに接続する
まずはVSCodeに拡張をインストールします。
Microsoft製のリモート開発拡張は Remote - SSH
, Remote - WSL
, Remote - Container
の3種類があります。この3つが一緒にインストールされる Remote Develpment
という拡張パックが提供されていますので、こちらをインストールします。
次に、開発用フォルダを作成しましょう。今回はPythonを開発するという状況を想定してみます。
適当なフォルダ (今回私は vscode-container-test
としました) をVSCodeで開いて、フォルダ内に Dockerfile
と app.py
を用意しましょう。
Dockerfile
FROM python:3.7
app.py
print('hello wsl2 docker!')
こんな感じです。
さて、いよいよコンテナを起動してVSCodeを接続していきます。
下の画像の手順どおりクリックしていきます。
すると、コンテナへの接続処理が始まります。完了すると、VSCodeの左下に Dev Container: Existing Dockerfile
の文字が表示されるはずです!
ここまでくれば完了です。すばらしい開発環境を手に入れることができました。
VSCodeのターミナルはコンテナ内で実行されますし、デバッガも動作します。
お疲れさまでした。
まとめ
無事に気持ちの良い開発環境を手に入れることができました。
ホストを汚さずに、ターミナルやデバッガがきちんと動作する開発環境を構築できるのは素晴らしいですね。これでいろんなプロジェクトを心置きなく並行開発できます。
みなさんもお試しあれ。
参考
WSL2 + VScodeでWindowsから一瞬でDockerコンテナ内に引き篭もれる開発環境を整えたかった - Qiita
WSL2で劇的に変わるあなたのWebアプリケーション開発環境【その3:実践編】 | SIOS Tech. Lab
VS CodeのRemote DevelopmentでFlaskアプリをデバッグしてみた | Developers.IO