VS Code (Visual Studio Code) のRemote Containers拡張機能をWSLやDockerと組み合わせることで、自分でDockerfileを書かなくても、開発環境コンテナをサクッと立ち上げることができます。
今回はGo言語の環境を作ってみました。

検証環境

  • Windows 10 Pro
    • Home でも大丈夫なはず
  • Windows Subsystem for Linux 2
  • Docker Desktop for Windows
  • Visual Studio Code
    • Remote - Containers(拡張機能)

WSL2 インストール

Docker インストール

  • Docker Desktop for Windows ダウンロード&インストール
    • Configuration
      • Enable WSL 2 Windows Features にチェックが入っているか確認
  • 確認

    1
    2
    3
    4
    5
    
    PS C:\> wsl -l -v
      NAME                   STATE           VERSION
    * CentOS7                Stopped         1
      docker-desktop-data    Running         2
      docker-desktop         Running         2
    

VS Code拡張機能

コンテナ作成

  • 任意のディレクトリをVS Codeで開く
  • コマンドパレット(F1 or Ctrl+Shift+P
    • Remote-Containers: Add Development Configuration Files...
      • Show All Definitions... から Go を選択
        • ここで別の言語を選ぶと、その言語の開発環境を作ることができる
      • バージョン選択
      • オプション選択
  • 設定ファイルが作成される
    1
    2
    3
    4
    
    go_test(任意のディレクトリ)
    └ .devcontainer
       ├ Dockerfile
       └ devcontainer.json
    

コンテナ起動

  • ディレクトリをVS Codeで開くと、 Folder contains a dev container configuration file. ... ダイアログが表示される
  • Reopen in Container をクリック
    • Dockerが起動していないと、エラーになります
    • 初回起動時のみ、Dockerのビルドが走るため時間がかかる
    • ビルド済みであれば、VS Codeが再起動し、環境が使用可能となる

Go ソースコード実行&ビルド

Hello, world.する

helloworld.go

1
2
3
4
5
6
7
package main

import "fmt"

func main() {
	fmt.Println("Hello, world.")
}

実行

1
2
root ➜ /workspaces/go_test $ go run helloworld.go
Hello, world.

ビルド

1
2
3
root ➜ /workspaces/go_test $ go build helloworld.go
root ➜ /workspaces/go_test $ ./helloworld
Hello, world.

参考