DevcontainerをEmacsで使用する

はじめに

DevcontainerはVSCodeの拡張機能として使用される開発環境という認識でしたが、Emacsから使用できないか調査しました。

下記を参考にしました。

ここで説明されている方法は、Dev Container CLI を使ってコンテナを立ち上げ、Tramp を使ってコンテナ内部をブラウズするというものです。

https://github.com/devcontainers/cli

このCLIというのは devcontainers公式のものなんですね。

また、公式の仕様を見る限り、VSCodeでの使用を前提としているわけではないと理解しました。

https://containers.dev/

LSP(Language Server Protocol)同様、オープンな仕様を定義して導入することでVSCode以外の開発環境の改善に貢献しており、このあたりのMicrosoftの取り組みは素晴らしいですね!

インストール

npmでインストールします。

npm install -g @devcontainers/cli

コンテナの立ち上げ

ここでは、既存のdevcontainer環境を使用する例を紹介します。

.devcontainer があるディレクトリで、下記のように実行します。

devcontainer up --workspace-folder .

必要に応じてDockerイメージがビルドされ、コンテナが立ち上がります。

コンテナ内のコマンド実行

ビルドコマンドがmakeであれば、下記のように実行できます。

devcontainer exec --workspace-folder . make

もちろん、bash等を使い、シェルに入ることもできます。

devcontainer exec --workspace-folder . /usr/bin/bash

コンテナ内のファイルシステムへのアクセス

Emacsでは(どのバージョンからサポートしているかの情報が見当たらなかったのですが、私の記憶では Emacs29 から) tramp で直接 dockerコンテナのファイルシステムにアクセスできます。

docker ps でコンテナのIDを取得し(下記の例ではa66888630fb0)、ファイルシステムを参照することができます。

/docker:a66888630fb0:

/docker:ユーザ名@a66888630fb0:

おわりに

このように、EmacsでもDevcontainerが使えます!

Copied title and URL