Devbox 📦 : Мгновенные, простые и предсказуемые оболочки и контейнеры


Что это такое?

Devbox — это инструмент командной строки, позволяющий легко создавать изолированные оболочки и контейнеры. Вы начинаете с определения списка пакетов, необходимых для вашей среды разработки, а devbox использует это определение для создания изолированной среды только для вашего приложения.

На практике Devbox работает аналогично пакетному менеджеру, такому как yarn — за исключением того, что пакеты, которыми он управляет, находятся на уровне операционной системы (то, что вы обычно устанавливаете с помощью brew или apt-get).

Devbox был первоначально разработан jetpack.io и работает на базе nix.

Почему мы его создали?

Как команда, мы хотели, чтобы у всех наших инженеров была предсказуемая среда разработки. У всех должны быть одинаковые инструменты, они должны быть зеркальным отражением production, и как новый инженер вы должны получить это окружение с помощью одной команды. Сначала мы создали контейнер docker, который отражал нашу среду разработки. Но это принесло другие проблемы: файловая система (и, следовательно, компиляция) была очень медленной, и если вы случайно выходили из контейнера, кэш сборки уничтожался. Мы решили, что разработка внутри контейнера просто слишком медленная. Поэтому мы стали искать решение, которое могло бы работать локально на нашем ноутбуке. Мы решили попробовать nix. Nix решил многие проблемы, он был многообещающим! Но его UX был сложнее, чем нужно. Он требует изучения нового языка, на котором вы пишете выражения nix — что казалось сложным для поддержки.

Поэтому мы написали Devbox. Это обертка вокруг nix, которая делает те случаи использования, о которых мы заботимся, очень простыми в использовании. Если вы знаете, как использовать yarn, вы знаете, как использовать Devbox.

Демонстрация

Пример ниже создает среду разработки с python 2.7 и go 1.18, даже если эти пакеты не установлены на базовой машине:

Преимущества

Единая оболочка для всех членов команды

Объявите список инструментов, необходимых вашему проекту, в файле devbox.json и запустите devbox shell. Все, кто работает над проектом, получают среду оболочки с точно такой же версией этих инструментов.

Пробуйте новые инструменты, не загрязняя свой ноутбук

Среды разработки, созданные Devbox, изолированы от всего остального в вашем ноутбуке. Есть инструмент, который вы хотите попробовать, не создавая беспорядка? Добавьте его в оболочку Devbox и удалите, когда он вам больше не нужен — и все это при сохранении чистоты вашего ноутбука.

Не жертвуйте скоростью

Devbox может создавать изолированные среды прямо на вашем ноутбуке, без дополнительного уровня виртуализации, замедляющего работу файловой системы или каждой команды. Когда вы будете готовы к отправке, он превратит его в эквивалентный контейнер — но не раньше.

Прощайте конфликтующие версии

Вы работаете над несколькими проектами, для каждого из которых нужны разные версии одного и того же двоичного файла? Вместо того чтобы пытаться установить конфликтующие версии одного и того же двоичного файла на свой ноутбук, создайте изолированную среду для каждого проекта и используйте любую версию для каждого из них.

Мгновенное превращение вашего приложения в контейнер

Devbox анализирует ваш исходный код и мгновенно превращает его в OCI-совместимый образ, который можно развернуть в любом облаке. Образ оптимизирован для скорости, размера, безопасности и кэширования… и без необходимости писать Dockerfile. И в отличие от билдпаков, он делает это быстро.

Перестаньте объявлять зависимости дважды

Вашему приложению часто требуется один и тот же набор зависимостей, когда вы разрабатываете его на ноутбуке и когда вы упаковываете его в контейнер для развертывания в облаке. Среда разработки Devbox изоморфна: это означает, что мы можем превратить ее как в локальную среду оболочки, так и в контейнер для облака, и все это без необходимости повторять дважды.

Установка Devbox

Помимо установки самого Devbox, вам потребуется установить nix и docker, поскольку Devbox зависит от них:

  1. Установите Nix Package Manager. (Не волнуйтесь, вам не нужно изучать Nix).

  2. Установите Docker Engine или Docker Desktop. Обратите внимание, что docker нужен только в том случае, если вы хотите создавать контейнеры — функциональность оболочки работает без него.

  3. Установите Devbox:

   curl -fsSL https://get.jetpack.io/devbox | bash
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Быстрый старт: Быстрая, детерминированная оболочка

В этом кратком курсе мы создадим оболочку для разработки с установленными специальными инструментами. Эти инструменты будут доступны только при использовании этой оболочки Devbox, чтобы не загрязнять вашу машину.

  1. Откройте терминал в новой пустой папке.

  2. Инициализируйте Devbox:

   devbox init
Войдите в полноэкранный режим Выйти из полноэкранного режима

Это создаст файл devbox.json в текущей директории. Вы должны зафиксировать его в системе контроля исходных кодов.

  1. Добавьте инструменты командной строки из пакетов Nix. Например, чтобы добавить Python 3.10:
   devbox add python310
Войти в полноэкранный режим Выйти из полноэкранного режима
  1. Ваш файл devbox.json отслеживает пакеты, которые вы добавили, теперь он должен выглядеть следующим образом:
   {
      "packages": [
         "python310"
       ]
   }
Вход в полноэкранный режим Выход из полноэкранного режима
  1. Запустите новую оболочку, в которой установлены эти инструменты:
   devbox shell
Войти в полноэкранный режим Выйти из полноэкранного режима

Вы можете сказать, что находитесь в оболочке Devbox (а не в обычном терминале), потому что приглашение оболочки и каталог изменились.

  1. Используйте свои любимые инструменты.

В этом примере мы установили Python 3.10, поэтому давайте воспользуемся им.

   python --version
Вход в полноэкранный режим Выход из полноэкранного режима
  1. Ваши обычные инструменты также доступны, включая переменные окружения и настройки конфигурации.
   git config --get user.name
Войти в полноэкранный режим Выход из полноэкранного режима
  1. Чтобы выйти из оболочки Devbox и вернуться в обычную оболочку:
   exit
Войти в полноэкранный режим Выйти из полноэкранного режима

Быстрый запуск: Мгновенный образ Docker

Devbox позволяет легко упаковать ваше приложение в OCI-совместимый образ контейнера. Devbox анализирует ваш код, автоматически определяет инструментарий, необходимый для вашего проекта, и собирает его в образ docker.

  1. Инициализируйте ваш проект с помощью devbox init, если вы этого еще не сделали.

  2. Соберите образ:

   devbox build
Войдите в полноэкранный режим Выйдите из полноэкранного режима

Полученный образ будет называться devbox.

  1. Пометьте изображение более описательным именем:
   docker tag devbox my-image:v0.1
Войти в полноэкранный режим Выйти из полноэкранного режима

Автоопределение языков:

В настоящее время Devbox определяет следующие языки:

  • Перейти

Хотите больше языков? Запросите новый язык или добавьте его через Pull Request.

Дополнительные команды

devbox help — посмотреть все команды

devbox plan — посмотреть конфигурацию и шаги, которые Devbox будет использовать для создания контейнера.

Присоединяйтесь к нашему сообществу разработчиков

  • Общайтесь с нами, присоединившись к серверу Jetpack.io Discord — у нас есть канал #devbox, посвященный этому проекту.
  • Подавайте отчеты об ошибках и запросы на функциональность с помощью Github Issues
  • Следите за нами в Твиттере Jetpack для получения обновлений продукта

Оцените статью
devanswers.ru
Добавить комментарий