JavaScriptを有効にしてください

【VSCode】Dev Container Features を利用して Dev Containerに簡単に機能を追加する

 ·  ☕ 2 分で読めます

【VSCode】Dev Container Features を利用して Dev Containerに簡単に機能を追加する

VSCode で Dev Container Features を利用して Dev Containerに簡単に機能を追加する

Dev Container Features とは

DevContainer に簡単に追加の機能を入れることが機能です。
これにより特にDockerの知識がなくても簡単に開発用のコンテナに言語などのセットアップが可能になります。

features の中にはGoやRustなど各種言語を入れることも簡単にでき docker-in-docker(Dockerの中でDockerを使う)や desktop-lite (デスクトップ) などの機能が存在していてとても有用です。

Dev Container Features を設定する

以下のように設定すると簡単に golts バージョンがインストールされます。

1
2
3
4
5
6
7
8
{
    "image": "ubuntu:latest",
    "features": {
        "go": {
            "version": "lts",
        },
    },
}

今回はDocker image を使用していますが dockerfile, docker-compose の際でも Dev Container に対して自動的に入れてくれます。
公式の features は以下にあります。
devcontainers/features

Dev Container Features の参照方法

Dev Container Features 自作用テンプレートは以下に用意されています。
Referencing a feature

公式リポジトリ使用時は該当名だけで良さそう(?

  • 公式リポジトリ
    • go
  • OCIリポジトリ
    • ghcr.io/user/repo/go:latest
  • URL
    • https://github.com/user/repo/releases/devcontainer-feature-go.tgz
  • ローカルリポジトリ
    • ./myGoFeature
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
{
    "image": "ubuntu:latest",
    "features": {
        "go": {
            "version": "lts",
        },
        "ghcr.io/user/repo/go": {},
        "ghcr.io/user/repo1/go:1": {},
        "ghcr.io/user/repo2/go:latest": {},
        "https://github.com/user/repo/releases/devcontainer-feature-go.tgz": { 
                "optionA": "value" 
        },
        "./myGoFeature": { 
                "optionA": true,
                "optionB": "hello",
                "version" : "1.0.0"
        }
    }
}

Dev Container Features を自作

Dev Container Features 自作用テンプレートは以下に用意されています。
devcontainers/feature-template

注意点

features を使用することで簡単に機能の導入が可能になります。
ですが、いくつか問題があります。

僕は以下の問題から積極的に features を使用していません。

実行順序

実行順序は以下のようでした。

  1. Image, Dockerfile, docker-compose からのコンテナの作成
  2. コンテナ作成後に features をインストール。

こうするとたとえばコンテナ作成時に細かな言語の設定をしたい場合などDev Containerに入ったあとに実行せざるおえません。

インストールするのが遅い

僕自身の利用感ですがインストールするのが遅いです。
おそらく様々な環境にインストール出来るようにしているためだと思います。
できるなら自分で Dockerfile をいじって環境に適した書き方をした方が早いかと思われます。

Dev Container じゃないといけない

当たり前ですが features を使用するに当たって Dev Container を起動しなければいけません。
そのため Dockerfile, docker-compose でコンテナを立ち上げても features がインストールされません。

参考

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer