
2026/01/14 21:59
**HNで話題:事前にコンテナを作らずに、どんな言語でもLLMをDocker上で実行する方法**
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
改訂要約
この記事では、AI コーディングアシスタント(Codex、OpenCode、GitHub Copilot など)用に必要な Docker コンテナをオンデマンドで起動するコマンドラインツール agent‑en‑place のインストールと使用方法について説明しています。
前提条件は Docker、Go 1.21+、Bash/Zsh シェル、および GitHub Copilot を利用する場合に必要な
gh CLI です。インストールは Homebrew(brew install mheap/tap/agent-en-place)、ソースからのビルド(go build)、または最新リリースバイナリをダウンロードして行うことができます。
インストール後、ユーザーは次のような小さなラッパー関数を定義します:
vibe() { bash -lc "$(agent‑en‑place $1)" }
そして任意のディレクトリで
vibe <provider> を実行します。ツールは自動的に .tool-versions、mise.toml、または言語固有のバージョンファイル(.nvmrc、.python-version など)から言語バージョンを検出し、それらのツールを含む最小限の Debian 12‑slim イメージを構築して、そのコンテナ内でアシスタントを非 root ユーザー(UID 1000)として実行します。イメージは mheap/agent-en-place:<tool1>-<version1>-<tool2>-<version2>-… というパターンで命名されます。現在の作業ディレクトリは /workdir にマウントされ、プロバイダー設定ディレクトリもマウントされ、必要な環境変数(Copilot 用の GH_TOKEN 等)が設定されます。
サポートされるプロバイダーには Codex (
@openai/codex)、OpenCode (opencode-ai)、GitHub Copilot (@github/copilot) があり、それぞれに特定のコマンドフラグと設定場所があります。ツールは、すべてのサポートされるアシスタントが Node.js を必要としているため、明示的に指定されていない場合でも自動的に Node.js を含めます。--debug、--rebuild、--dockerfile などの高度なフラグは、ビルド出力を制御したり、イメージの再構築を強制したり、生成された Dockerfile を表示したりするために既に利用可能です。
agent‑en‑place は MIT ライセンスの下でリリースされています。
本文
agent‑en‑place
mise を使ってプロジェクト用のオンデマンド Docker コンテナとエージェント型コーディングを構築します。
前提条件
- Docker(インストール済みかつ実行中)
- Go 1.21+(ソースからビルドする場合に必要)
- Bash または Zsh シェル
CLI (GitHub Copilot プロバイダーを使う際のみ必須)gh
インストール
Homebrew(macOS / Linux)
brew install mheap/tap/agent-en-place
ソースからビルド
git clone https://github.com/mheap/agent-en-place cd agent‑en‑place go build # バイナリを PATH へ移動 mv agent‑en‑place /usr/local/bin/
バイナリのダウンロード
GitHub Releases から対象プラットフォーム用の最新リリースをダウンロードしてください。
使い方
シェル設定ファイル(
.bashrc、.zshrc 等)にヘルパー関数を定義します:
function vibe() { bash -lc "$(agent-en-place $1)" }
その後実行:
vibe <provider>
ツールは次のように動作します。
- プロジェクト設定ファイルからツールバージョンを検出
- それらのツールを含む Docker イメージ(または既存イメージ)をビルド/再利用
コマンドを生成 & 実行docker run- 選択した AI コーディングツールをコンテナ内で起動
設定
自動バージョン検出
agent‑en‑place は複数のファイル形式からツールバージョンを読み取ります。
| フォーマット | 例 |
|---|---|
mise/asdf() | |
| mise.toml(ネイティブ形式) | |
言語固有のバージョンファイル
ツールは以下の言語別ファイルも認識します。
| ファイル名 | 対応言語 | 例 |
|---|---|---|
| Node.js | |
| Node.js | |
| Python | |
| Ruby | |
| Ruby | |
| Go | |
| Java | |
| Java | |
| Crystal | |
| Elixir | |
| Yarn | |
注記:Node.js はすべてのサポート対象 AI コーディングツールで必須とされるため、明示的に指定しなくても自動的に含まれます。
対応プロバイダー
| プロバイダー | パッケージ | コマンド | 要件 | 設定 |
|---|---|---|---|---|
| codex | | | なし | に保存 |
| opencode | | | なし | と に保存 |
| copilot | | | CLI 認証済み() | で管理( は CLI から取得) |
動作原理
- 設定検出 – 現在のディレクトリ内で
、.tool-versions
、および言語固有バージョンファイルを検索。mise.toml - バージョン解析 – ツール名とバージョンを抽出。
- Dockerfile 生成 – Debian 12‑slim ベースに以下を構築:
ランタイムマネージャーmise- 指定されたすべてのツール(指定バージョン)
- セキュリティ向上のため非 root ユーザー(UID 1000)
- イメージビルド – Docker イメージを構築(変更が無ければキャッシュ済みイメージを再利用)。
- イメージ命名 –
の形式。mheap/agent-en-place:<tool1>-<version1>-<tool2>-<version2>-… - コンテナ実行 – 以下をマウントした
コマンドを出力:docker run- カレントディレクトリ →
/workdir - プロバイダー設定ディレクトリ(例:
)~/.copilot - 必要な環境変数の設定
- カレントディレクトリ →
高度な使用方法
| フラグ | 説明 |
|---|---|
| Docker ビルド出力を表示(デフォルトでは非表示)。トラブルシューティングに便利。 |
| 既存イメージがあっても強制的に再ビルド。最新ツールバージョンを取得したい場合に使用。 |
| Dockerfile を生成して表示し、ビルドせずに終了。デバッグやカスタマイズ時に有効。 |
例
# opencode のビルド出力を表示 agent-en-place --debug opencode # copilot 用に強制再ビルド agent-en-place --rebuild copilot # codex 用 Dockerfile を確認 agent-en-place --dockerfile codex # フラグを組み合わせて実行 agent-en-place --debug --rebuild opencode
ライセンス
MIT License