WSL + Docker + VSCode でSQLサーバーをお手軽に立てよう

# WSL + Docker + VSCode でSQLサーバーをお手軽に立てよう
だいぶ説明雑なのは知り合いの初心者向けに書いたからです

## それぞれの概要

1. WSL(WSL2)

    - Microsoftが提供する仮想環境Hyper-Vがベースに使われた、Linux環境をWindows上で構築するシステム。
    - ほぼ完全なLinuxが動作するため、従来Windowsが弱点としていたバックエンド開発(サーバー等の開発)にてLinuxのソフトウェア資源がそのまま利用できるようになった。

2. Docker
    - コンテナ型仮想環境といわれる仕組みの仮想ソフトウェア。
    - 今までの仮想マシンに比べ、クラウドなどのスタートが同じ環境を複数人が異なるデータで使う場面や、開発中のテストに使い捨て環境を構築することがやりやすいのが利点

3. VSCode
    - 最近はやりのEditorの一角
    - エディタだが拡張機能が多くIDE並みの環境を簡単に構築できる
    - Terminalを開きながらDockerの管理をしてSQLサーバにつなぐなんてこともできる

## WSLのインストール

1. 管理者でPowerShellをひらき(Windows + x　からPowershell(管理者))、以下のコマンドを一行ずつ入力する。

    ```Powershell

    dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    ```

2. 再起動し、再び管理者でPowershellを開く

    ```Powershell

    curl "https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi" -Outfile wsl_update_x64.msi -UseBasicParsing

    start wsl_update_x64.msi

    wsl --set-default-version 2

    ```

3. MSStoreを開く

    わからなければWindows+Rでファイル名を指定して実行を開き、

    ```cmd

    ms-windows-store:

    ```

    でもOK

4. 検索ボタンを押し、Ubuntuと入力する

   - いくつかバージョンが出てくる(20.04など)が何もかいてないUbuntuを入手する

    - MSアカウントの設定がない場合、指示に従ってアカウントでログイン/サインアップする。

    - インストールが完了すると起動ボタンが出てくるのでクリック

5. 初期設定

    1. Username:　という表示になったらユーザー名、EnterするとPassword: となるのでパスワードを入力する
    
    2. しばらく待つ

    3. セットアップが終わるとユーザー名 ~ $ の表記になり、入力可能になる

    4. sudo apt update && sudo apt upgrade -y と入力し、中のアプリケーションのアップデートをする。

    5. sudo apt -y install  language-pack-japanese-ja　と入力し、日本語パックをインストールす
    
    6. sudo update-locale LANG=ja.JP.UTF8 と入力し、日本語を適用させる

    7. 一度ウインドウを閉じて、もう一度開くと日本語化が完了している。(スタートメニュー内のUbuntuから開ける)

    8. 完了

## Dockerのインストール

1. ダウンロードとインストール

    Powershellを開き

    ```powershell
    curl "https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe" -outfile "Docker Desktop Installer.exe" -UseBasicParsing
    start "Docker Desktop Installer.exe"
    ```

   と入力し指示にしたがってインストールし、再起動する

2. Docker Hub にサインアップ

  - [https://hub.docker.com/](https://hub.docker.com/) を開き、サインアップの画面になったらID,Mail,Passwordを入力
  - メールアドレスにメールが届くので開いてVerifyする
  - 完了したらタスクトレイ内のDockerを押すとsignin...というボタンがあるのでクリックしてID,Passwordを入力

3. Dockerを開き、設定を開き(ギアマーク)、Use WSL ~にチェックが入ってるのを確認する

4. 終わり

## VScode

1. [https://code.visualstudio.com/](https://code.visualstudio.com/)を開いてダウンロード、インストール

2. 起動して拡張機能ボタンを押して(or Ctrl + Shift + x)検索欄にJapaneseと入れると言語パックがでてくるのでインストール

3. VSCodeを再起動する

4. 拡張機能からDocker、mssqlをインストールする

5. 終わり

## DockerにMSSQLパッケージを入れてVSCodeから触る

1. VSCodeでCtrl + @　でターミナルをだし、

    ```Powershell

    docker login
    docker pull  mcr.microsoft.com/mssql/server:2019-CU5-ubuntu-16.04
    ```

    と入力するとインストールされる

2. そのままVSCodeのターミナルに
   
    ```Powershell

    docker run  -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=PassW@rd" -p 1433:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2019-CU5-ubuntu-16.04
    ```

    と入力するとSQLサーバーが立ち上がる

3. VSCodeのMSSQLの接続でアドレスはlocalhost、IDはsa、Passwordは今回はPassW@rdと入力してログイン

4. SQLサーバーにログイン完了

## 終了

1. VSCodeの左側にDockerのアイコンが追加されているので、クリック

2. containersにSQL1があるので右クリックしてstop

3. もう一度右クリックしてremoveすればまっさらな環境から再スタートできる

4. removeしなければ次に触りたいときにここからstartすると前回の状態から再開できる

## よくある質問

### Q. 仮想環境内にファイルいれたい

A. docker cp ローカルのパス　コンテナID:コンテナ内のパス でできるよ

### Q.なんでこんなめんどくさいことするの？

A.新しい問題とかの時に前回のゴミが残るとそのほうが面倒くさいので


## 最後に
ファイアウォールとかに何か言われたら許可してください  
インストールしてから書いているので違ったりするかもです
その時は教えてください