Windowsでの開発環境を構築する(WSL2, Docker, VSCode)

windowsdocker

WSL2

WSL2を有効化してストアからUbuntuとWindows Terminalをインストールする。

# PowerShell
$ dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
$ wsl --set-default-version 2

Ubuntuのユーザー設定後、Windows Terminalの既定のプロファイルをUbuntuに変更するとMacのターミナルのように使うことができる。 GoAWS CLIなど必要なものをUbuntuに入れていく。

$ sudo apt install -y make

# Go & grpc
$ wget https://golang.org/dl/go1.16.4.linux-amd64.tar.gz
$ sudo tar -C /usr/local -xzf go1.16.4.linux-amd64.tar.gz
$ echo "export PATH=$PATH:/usr/local/go/bin" >> ~/.bash_profile
$ sudo apt install -y protobuf-compiler
$ go install google.golang.org/protobuf/cmd/[email protected]
$ go install google.golang.org/grpc/cmd/[email protected]
$ echo 'export PATH="$PATH:$(go env GOPATH)/bin"' >> /.bash_profile
$ ln -s /mnt/c/Users/****/go ~/go

# AWS CLI, CDK
$ sudo apt install -y unzip npm
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" && unzip awscliv2.zip && sudo ./aws/install
$ aws configure
$ mkdir -p /mnt/c/Users/****/.aws/
$ mv ~/.aws /mnt/c/Users/****/.aws
$ ln -s /mnt/c/Users/****/.aws ~/.aws
$ sudo npm install -g cdk

# Git config
$ ssh-keygen -t rsa -b 4096
$ git config --global user.name "*****"
$ git config --global user.email "*****"
$ git config --global core.filemode false
$ git config --global core.editor "vim"

割り当てるリソース量などはwslconfigで変更できる。

Docker

WSL2用コンポーネントにチェックを入れてDocker Desktopをインストールして起動すると、 WSL2から/var/run/docker.sockでdaemonにアクセスできる。sudoなしで実行するためにdocker groupに入れる。

VSCodeのdevcontainerにSAM CLIをインストールしlocal invokeする - sambaiz-net

$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

$ ls -l /var/run/docker.sock
srw-rw---- 1 root docker 0 May 15 23:29 /var/run/docker.sock

$ sudo gpasswd -a <user> docker

VSCode

PATHの追加にチェックを入れてVSCodeをインストールすると、 WindowsのPATHがWSL2に引き継がれてcodeコマンドで開ける。

$ echo $PATH
...:/mnt/c/Users/****/AppData/Local/Programs/Microsoft VS Code/bin:/snap/bin:/usr/local/go/bin

$ ls "/mnt/c/Users/****/AppData/Local/Programs/Microsoft VS Code/bin"
code  code.cmd

Remote - WSL Extensionを入れるとWSL2環境で開発できる。