うごくものづくりのために

技術的な備忘録がメインです。

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を切り替えようとしたのですが、うまく切り替わりません。

f:id:tilt_silvie:20200405220752p:plain
f:id:tilt_silvie:20200405220849p:plain

何やら怪しげなメッセージが出ています。カーネルを更新しろとのこと。
メッセージにあるURLにアクセスしてみます。

WSL 2 Linux カーネルの更新 | Microsoft Docs

更新プログラムをダウンロードして、インストールします。

インストール後、Powershellを再起動し再度ディストリビューションのVer切り替えにチャレンジします。

f:id:tilt_silvie:20200405221920p:plain

成功しました!

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

上記記事のこのあたりから、インストーラをダウンロードしてインストールします。

f:id:tilt_silvie:20200412145200p:plain

インストールが完了したらWindowsを再起動します。その後、PowerShellを起動してDockerのhello-worldしてみましょう。

f:id:tilt_silvie:20200412150944p:plain
Windows 10 Home でDockerが使えている!

Windows 10 Home でDockerが使えている! この時点で少し感動モノです。

VSCode Remote Container を使ってコンテナに接続する

まずはVSCodeに拡張をインストールします。
Microsoft製のリモート開発拡張は Remote - SSH, Remote - WSL, Remote - Container の3種類があります。この3つが一緒にインストールされる Remote Develpment という拡張パックが提供されていますので、こちらをインストールします。

f:id:tilt_silvie:20200412152337p:plain

次に、開発用フォルダを作成しましょう。今回はPythonを開発するという状況を想定してみます。

適当なフォルダ (今回私は vscode-container-test としました) をVSCodeで開いて、フォルダ内に Dockerfileapp.py を用意しましょう。

Dockerfile

FROM python:3.7

app.py

print('hello wsl2 docker!')

こんな感じです。

f:id:tilt_silvie:20200412153050p:plain


さて、いよいよコンテナを起動してVSCodeを接続していきます。 

下の画像の手順どおりクリックしていきます。 

f:id:tilt_silvie:20200412160651p:plain

f:id:tilt_silvie:20200412160658p:plain

f:id:tilt_silvie:20200412160708p:plain

すると、コンテナへの接続処理が始まります。完了すると、VSCodeの左下に Dev Container: Existing Dockerfile の文字が表示されるはずです!

f:id:tilt_silvie:20200412161801p:plain

ここまでくれば完了です。すばらしい開発環境を手に入れることができました。 
VSCodeのターミナルはコンテナ内で実行されますし、デバッガも動作します。 

f:id:tilt_silvie:20200412161430p:plain

お疲れさまでした。

まとめ

無事に気持ちの良い開発環境を手に入れることができました。
ホストを汚さずに、ターミナルやデバッガがきちんと動作する開発環境を構築できるのは素晴らしいですね。これでいろんなプロジェクトを心置きなく並行開発できます。

みなさんもお試しあれ。

参考

WSL2 + VScodeでWindowsから一瞬でDockerコンテナ内に引き篭もれる開発環境を整えたかった - Qiita

WSL2で劇的に変わるあなたのWebアプリケーション開発環境【その3:実践編】 | SIOS Tech. Lab

VS CodeのRemote DevelopmentでFlaskアプリをデバッグしてみた | Developers.IO