【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 を設定する
以下のように設定すると簡単に go
の 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
|
|
Dev Container Features を自作
Dev Container Features 自作用テンプレートは以下に用意されています。
devcontainers/feature-template
注意点
features を使用することで簡単に機能の導入が可能になります。
ですが、いくつか問題があります。
僕は以下の問題から積極的に features
を使用していません。
実行順序
実行順序は以下のようでした。
Image
,Dockerfile
,docker-compose
からのコンテナの作成- コンテナ作成後に
features
をインストール。
こうするとたとえばコンテナ作成時に細かな言語の設定をしたい場合などDev Containerに入ったあとに実行せざるおえません。
インストールするのが遅い
僕自身の利用感ですがインストールするのが遅いです。
おそらく様々な環境にインストール出来るようにしているためだと思います。
できるなら自分で Dockerfile
をいじって環境に適した書き方をした方が早いかと思われます。
Dev Container じゃないといけない
当たり前ですが features
を使用するに当たって Dev Container を起動しなければいけません。
そのため Dockerfile
, docker-compose
でコンテナを立ち上げても features
がインストールされません。