【自分用メモ】【環境構築】Windows WSL2 Python Node.js docker

毎回忘れるので、WindowsのWSL2のインストールから、GitHub, Python, node, Dockerの一連の手順のメモ

## WSL2

以下、WindowsのPowershellで、

```powershell
wsl --install -d Ubuntu-24.04
```

デフォルトだと、メモリーを食うので、```C:\Users\{ユーザー名}\.wslconfig```
で、wsl2のメモリ・swap上限の設定をする

```txt:.wslconfig
[wsl2]
memory=2GB
swap=0
localhostForwarding=True
```

PCを再起動して、Ubuntuのbashで、

```bash
sudo apt update
sudo apt upgrade
```

WindowsのPathがWSL2に引き継がれると邪魔なので、

```bash
sudo vi /etc/wsl.conf
--
# WindowsのPATHを引き継がない設定を追記する
[interop]
appendWindowsPath = false
```

## VSCode

```code```コマンドが使えるように環境変数に追加する。

```bash
vi ~/.bashrc
--
# WindowsのVSCodeのパスを追加する
export PATH=$PATH:'/mnt/c/Users/[ユーザ名]/AppData/Local/Programs/Microsoft VS Code/bin'
```

## GitHub

SSHの設定をする

```bash
# SSH keyの生成
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/github
```

```bash
# SSH configの設定
touch ~/.ssh/config
vi ~/.ssh/config
--
Host github github.com
    HostName github.com
    IdentityFile ~/.ssh/github
    User git
```

生成した公開鍵をGitHubに登録する

```bash
cat ~/.ssh/github.pub
```

アカウントのアイコン > [Settings] > [SSH and GPG keys] > [New SSH key]
コピーした公開鍵の値を登録する。

最後に、git configを更新する

```bash
git config --global user.email <your email address>
git config --global user.name <your account name>
```

## Python

pyenvとPoetryを使用する。

### pyenv

```bash
# pyenvのインストール
curl -fsSL https://pyenv.run | bash

# コンパイラのインストール
sudo apt update; sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

# 環境変数の設定
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile
echo 'eval "$(pyenv init - bash)"' >> ~/.profile

# Pythonのインストール
pyenv --version

pyenv install -list

pyenv install <python version>

pyenv global <python version>

python -V
```

### Poetry

```bash
curl -sSL https://install.python-poetry.org | python -

poetry --version
```

## Node.js

nvmを使用する

```bash
# nvmのインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

nvm --version

# nodeのインストール
nvm ls-remote

nvm install <node version>

node -v
```

## Docker

```bash
# dockerのインストール
# https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository を参照

# WSL2のdockerを自動起動する設定
sudo systemctl enable docker

# sudo不要でdockerコマンドを使用できるようにする
sudo groupadd docker
sudo usermod -aG docker $USER
exit
```

社内LAN等で、プロキシ設定が必要な場合は以下を参照する

https://zenn.dev/wsuzume/articles/f9935b47ce0b55

## 参考

https://zenn.dev/mryo0826/articles/82da0d1eb2d230

https://zenn.dev/d_pontaro/articles/wsl-config-swap

https://zenn.dev/denham/scraps/b39626639fc2cf

https://zenn.dev/o2z/articles/zenn-20210524-01

https://qiita.com/kkrtech/items/a164f455c73867958181

https://github.com/pyenv/pyenv?tab=readme-ov-file#installation

https://python-poetry.org/docs/#installing-with-the-official-installer

https://qiita.com/SAITO_Keita/items/2382ed7b5b620c69bbff