コンテンツにスキップ

DevPod - オープンソース開発環境コード チートシート

DevPod - オープンソース開発環境コード チートシート

DevPod(Loft)は クライアントのみ・オープンソースツール — 標準 devcontainer.json から 任意バックエンド上で再現可能開発環境構築。ローカル Docker、リモート SSH マシン、Kubernetes クラスター、クラウド VM など。自ホスト無意見な GitHub Codespaces:任意 IDE(VS Code、JetBrains、ブラウザ)で動作。プラグ可能 providers でどこで実行するか制御。サーバーコンポーネント運用なし。

インストール

方法実行方法
CLIGitHub Releases から Linux/macOS/Windows ダウンロード
Desktop appDevPod Desktop GUI 利用可能
要件プロバイダーバックエンド(Docker、SSH host、K8s、クラウド)
確認devpod version

プロバイダー(環境実行場所)

コマンド説明
devpod provider add dockerローカル Docker を使用
devpod provider add ssh --option HOST=user@hostリモートマシン使用
devpod provider add kubernetesK8s クラスター内実行
devpod provider add aws (gcloud、azure)クラウド VM プロバイダー
devpod provider list設定済みプロバイダー一覧
devpod provider use dockerデフォルトプロバイダー設定

ワークスペース作成

コマンド説明
devpod up .現在リポジトリの devcontainer から環境開始
devpod up github.com/org/repoGit リポジトリ URL から
devpod up . --ide vscode特定 IDE で開く
devpod up . --provider kubernetesバックエンド選択
devpod up . --recreateワークスペース再構築

ワークスペース管理

コマンド説明
devpod listワークスペース一覧
devpod stop <name>ワークスペース停止
devpod delete <name>ワークスペース削除
devpod ssh <name>ワークスペースに SSH
devpod status <name>ワークスペース状態表示

devcontainer.json(spec)

DevPod はオープン Dev Container spec を使用。同じファイルが Codespaces・VS Code・DevPod で動作。

{
  "name": "my-project",
  "image": "mcr.microsoft.com/devcontainers/base:ubuntu",
  "features": {
    "ghcr.io/devcontainers/features/node:1": { "version": "20" }
  },
  "postCreateCommand": "npm install",
  "customizations": {
    "vscode": { "extensions": ["dbaeumer.vscode-eslint"] }
  }
}
フィールド目的
image / dockerfileベース環境
features構成可能アドオン(言語・ツール)
postCreateCommand作成後実行セットアップ
forwardPortsポート公開
customizationsIDE 固有設定/拡張

IDE 統合

IDE実行方法
VS Code--ide vscode(デスクトップ・ブラウザ)
JetBrains--ide goland/pycharm/...
ブラウザ(openvscode)--ide openvscode
SSH/terminaldevpod ssh <name>

一般的なワークフロー

# リポジトリの devcontainer からのローカル Docker 開発環境
devpod provider add docker
devpod up github.com/org/project --ide vscode

# 重いビルドを力強いリモートマシンにオフロード
devpod provider add ssh --option HOST=me@build-server
devpod up . --provider ssh

# Kubernetes での一時的クラウド環境、完了時削除
devpod up . --provider kubernetes
devpod delete my-project

DevPod vs 代替案

項目DevPodGitHub CodespacesDevboxGitpod
ホスティング任意バックエンド(自選択)GitHub クラウドローカル(Nix)クラウド/自ホスト
Specdevcontainer.jsondevcontainer.jsondevbox.jsonGitpod 設定
サーバーなし(クライアントのみ)管理なしサーバー
最適用途移植可能、任意クラウド開発GitHub ゼロ設定再現可能ローカルGit トリガーワークスペース

DevPod は Codespaces と同じ devcontainer spec を使用。ローカル Nix ベース環境の場合は Devbox 参照。

リソース