[DEV Containers]開発環境を素早く用意する


はじめに

Developing inside a Container using Visual Studio Code Remote Development

開発コンテナーの概要 – GitHub Docs

コンテナ技術は至る場面で利用されている。
Dockerなどの単純なものから、Kubernetsでオーケストレーションして運用していくものまで。

日々、開発が進みプロジェクトやリポジトリの数が増えていくと、常にすべてを最新バージョンに保つのは難しくなる。
一方、開発環境はリポジトリに合わせないと余計なトラブルシューティングをすることになる。

カスタマイズしながら使ったり、OSのサービスを作るような場合は、Hyper-Vなどで大量の開発用VMを持つ方が確実なこともある。
一方、たまにしか弄らなかったり、第三者が利用することも想定する場合、誰でも素早く開発環境構築できるようにしておいた方が良い。

リポジトリのルートに.devcontainer/devcontainer.jsonを定義しておくと、Visual Studio Code(GitHub codespacesも含む)で自動的にビルドしてくれる。

以前は開発用コンテナを用意する際、コンテナをビルド・起動、ボリュームをどこにバインドするかなど手作業が多かった。
また、ゲストOSのユーザーとホストOSのユーザーが異なるため、コンテナのボリュームをホスト側にバインドして書き込むと消せないファイルがホスト側にできあがることもある。

DEV Containersはそれがない。
公式あるいはマーケットプレイスで提供されている場合はそのまま使えば良いし、(古いOSなど)カスタムが必要な場合はDockerfileやdocker-compose.ymlも合わせることで細かい環境構築が出来る。
また、自動インストールするVisual Codeの拡張機能も定義できるので、必要な機能を一式用意できる。
バインドによって書き出されたファイルの権限も調整してくれるので、ホスト側にroot権限のファイルが出来るなんてこともない。

開発用コンテナ起動方法

Visual Studio Codeでワークスペースを開くと自動的に検知する。
Codespacesの場合は定義に沿ってビルドして起動する。

自分で起動する場合は「接続」→「コンテナーで再度開く」をクリックするだけ。
自動的にビルドが始まって、コンテナが起動する。

手作業をなるべく減らすのは有意義な開発に必要。

, ,