devbox - Devbox は、分離されたシェルとコンテナーを簡単に作成できるコマンドライン ツールです。

(Instant, easy, predictable shells and containers.)

Created at: 2022-08-19 04:27:16
Language: Go
License: Apache-2.0

Devbox📦

インスタント、簡単、予測可能なシェルとコンテナ

不和に参加する ライセンス: アパッチ 2.0 バージョン


それは何ですか?

Devbox は、分離されたシェルとコンテナーを簡単に作成できるコマンドライン ツールです。開発環境に必要なパッケージのリストを定義することから始めます。devbox はその定義を使用して、アプリケーション専用の分離された環境を作成します。

実際には、Devbox はパッケージ マネージャーと同じように機能

yarn
しますが、それが管理するパッケージはオペレーティング システム レベル (通常は
brew
またはでインストールするようなもの
apt-get
) である点が異なります。

Devbox はもともと jetpack.io によって開発され内部で

nix
.

デモ

python 2.7
以下の例では、とを使用して開発環境を作成し
go 1.18
ますが、これらのパッケージは基盤となるマシンにインストールされていません。

スクリーンキャスト

利点

チーム全員のための一貫したシェル

devbox.json
ファイルを介してプロジェクトに必要なツールのリストを宣言し、を実行します
devbox shell
。プロジェクトに携わる全員が、まったく同じバージョンのツールを備えたシェル環境を取得します。

ノートパソコンを汚さずに新しいツールを試す

Devbox によって作成された開発環境は、ラップトップ内の他のすべてのものから分離されています。めちゃくちゃにせずに試してみたいツールはありますか? それを Devbox シェルに追加し、不要になったら削除するだけで、ラップトップを元の状態に保つことができます。

スピードを犠牲にしない

Devbox は、ファイル システムやすべてのコマンドの速度を低下させる追加の仮想化レイヤーを使用せずに、ラップトップ上で分離された環境を作成できます。出荷の準備が整うと、同等のコンテナに変わりますが、それ以前ではありません。

競合するバージョンにさようなら

複数のプロジェクトに取り組んでいますが、そのすべてが同じバイナリの異なるバージョンを必要としていますか? ラップトップに同じバイナリの競合するバージョンをインストールしようとする代わりに、プロジェクトごとに分離された環境を作成し、それぞれに必要なバージョンを使用してください。

アプリケーションをコンテナに即座に変換

Devbox はソース コードを分析し、任意のクラウドにデプロイできる OCI 準拠のイメージに即座に変換します。イメージは、速度、サイズ、セキュリティ、およびキャッシングに関して最適化されてい

Dockerfile
ます。buildpacksとは異なり、迅速に実行されます。

依存関係を 2 回宣言するのをやめる

ラップトップで開発している場合と、クラウドにデプロイする準備ができているコンテナーとしてアプリケーションをパッケージ化している場合、多くの場合、アプリケーションは同じ依存関係のセットを必要とします。Devbox の開発環境は同形です。つまり、ローカル シェル環境またはクラウド対応コンテナーの両方に変換できます。2 回繰り返す必要はありません。

Devbox のインストール

Devbox 自体のインストールに加えて、以下をインストールする必要があります

nix
。Devbox
docker
はそれらに依存しているためです。

  1. Nix Package Managerをインストールします。(心配しないでください。Nix を学ぶ必要はありません。)

  2. Docker EngineまたはDocker Desktopをインストールします。docker は、コンテナーを作成する場合にのみ必要であることに注意してください。シェル機能は、docker がなくても機能します。

  3. Devbox をインストールします。

    curl -fsSL https://get.jetpack.io/devbox | bash

クイックスタート: 高速で確定的なシェル

このクイック スタートでは、特定のツールがインストールされた開発シェルを作成します。これらのツールは、この Devbox シェルを使用している場合にのみ使用できるため、マシンが汚染されることはありません。

  1. 新しい空のフォルダーでターミナルを開きます。

  2. Devbox を初期化します。

    devbox init

    これにより

    devbox.json
    、現在のディレクトリにファイルが作成されます。ソース管理にコミットする必要があります。

  3. Nix Packagesからコマンドライン ツールを追加します。たとえば、Python 3.10 を追加するには:

    devbox add python310
  4. ファイル

    devbox.json
    は、追加したパッケージを追跡します。現在、次のようになっているはずです。

    {
       "packages": [
          "python310"
        ]
    }
  5. これらのツールがインストールされた新しいシェルを開始します。

    devbox shell

    シェル プロンプトとディレクトリが変更されたため、(通常のターミナルではなく) Devbox シェルにいることがわかります。

  6. お気に入りのツールを使用してください。

    この例では Python 3.10 をインストールしたので、それを使用してみましょう。

    python --version
  7. 環境変数や構成設定など、通常のツールも利用できます。

    git config --get user.name
  8. Devbox シェルを終了して通常のシェルに戻るには:

    exit

クイックスタート: インスタント Docker イメージ

Devbox を使用すると、アプリケーションを OCI 準拠のコンテナー イメージに簡単にパッケージ化できます。Devbox はコードを分析し、プロジェクトに必要な適切なツールチェーンを自動的に識別して、docker イメージにビルドします。

  1. プロジェクトをまだ初期化し

    devbox init
    ていない場合は初期化します。

  2. イメージをビルドします。

    devbox build

    結果の画像の名前は

    devbox
    .

  3. よりわかりやすい名前で画像にタグを付けます。

    docker tag devbox my-image:v0.1

自動検出された言語:

Devbox は現在、次の言語を検出します。

  • 行け

他の言語が必要ですか? 新しい言語を求めるか、プル リクエストで貢献してください。

追加コマンド

devbox help
- すべてのコマンドを見る

devbox plan
- Devbox がコンテナーを生成するために使用する構成と手順を参照してください。

開発者コミュニティに参加する

  • Jetpack.io Discord サーバーに参加してチャットしてください。このプロジェクト専用の #devbox チャンネルがあります。
  • Github Issueを使用してバグ レポートと機能リクエストを提出する

関連作業

分離シェルを提供してくれたNixに感謝します。

ライセンス

このプロジェクトは、 Apache 2.0 ライセンスの下で誇らしげにオープンソースです