Создание игровых площадок для работы с новыми репозиториями без локальной установки

Знакомое зрелище, если вы меня. Найдите интересный репозиторий на GitHub и хотите его быстро просмотреть, но он не на моем любимом языке в данный момент, поэтому на моем ноутбуке не настроена среда. В README есть инструкции по настройке, но я не уверен, что все это будет делать с моей машиной (я смотрю на вас, Python).

Docker спешит на помощь (или Rancher, если вам больше нравится версия с открытым исходным кодом).

Для примера возьмем https://github.com/ente-io/bada-frame. Допустим, нам это показалось интересным, и мы хотим попробовать. Сначала клонируем репозиторий:

$ git clone https://github.com/ente-io/bada-frame

и откройте его в VS Code.

$ code bada-frame

Идея, изложенная в этом посте, может работать и без VS Code, потому что внутри он просто использует контейнеры Docker. Просто VS Code и расширение Remote Containers дают нам хороший готовый способ реализовать наши желания. Кроме того, я обнаружил, что в конечном итоге нам понадобится редактор для внесения небольших правок в репозиторий, с которым мы играем. Так что, если мы создадим эти контейнеры вручную, нам также потребуется установить редактор внутри этих контейнеров, и этим редактором может быть VS Code, и… вы видите, к чему все идет.

Вернемся к посту. В VS Code установим расширение «Remote — Containers» от Microsoft.

После его установки откройте средство выбора команд (Cmd — Shift — P) и выполните команду «Remote-Containers: Reopen in Container».

Он спросит нас, какое базовое изображение мы хотим использовать. Из беглого взгляда на README мы вспоминаем, что это Typescript, так что давайте перейдем к «Node.js + Typescript».

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

Если это какой-то код, с которым мы регулярно работаем, мы могли бы написать Dockerfile, но это не то, чем мы хотим заниматься прямо сейчас. Мы не хотим контейнеризовать приложение или делать воспроизводимые сборки или что-то в этом роде. Нам просто нужна песочница или игровая площадка, чтобы поиграть с кодом, попробовать что-нибудь.

Теперь VS Code приступит к запуску вашего Dev Container. Как только это будет сделано (это может занять несколько секунд, пока он загружает базовые изображения), мы должны получить хороший обнадеживающий зеленый цвет в левом нижнем углу, говорящий, что мы находимся в «контейнере разработки: Node.js & TypeScript». Хороший!

Итак, продолжим наше путешествие. Теперь мы можем открыть README проекта и просто запустить команды (надеюсь), описанные в разделе инструкций по установке в README.

Чтобы позволить нам это сделать, сначала давайте откроем терминал (Ctrl — `); самое классное, если вы еще не поняли, это то, что это не терминал на нашей машине, а терминал внутри контейнера Docker. Так что мы можем ковыряться, не ковыряясь в нашей машине.

Для нашего примера команды действительно задокументированы в README, давайте запустим их в нашем терминале внутри VS Code.

➜ $ git submodule update --init --recursive

(Обновление подмодуля было бы лучше сделать вне нашего контейнера, но да ладно, это тоже работает. Мы просто играемся, давайте оставаться в потоке.)

Далее следует стандартная настройка TS:

➜ $ yarn install

Вот и все. Теперь давайте запустим наш сервер разработки.

➜ $ yarn dev

Когда мы это делаем, VS Code автоматически определяет, что мы запустили процесс, который открыл порт, и предлагает перенаправить порт для нас:

Да, черт возьми! Когда вы нажмете «Открыть в браузере», он откроет его в браузере, который взаимодействует с сервером разработки, работающим в нашем контейнере.

Вот и все.

Мы можем остановить сервер (просто закройте окно VS Code), а затем, когда мы вернемся к нему позже (просто снова откроем папку в VS Code), он автоматически перезапустит контейнер для нас и вернет нам приглашение терминала. Мы можем снова yarn dev продолжить с того места, на котором остановились.

Все контейнеры, которые мы создали таким образом, можно найти на панели Remote Explorer, которую VS Code отобразит на панели действий.

Я надеюсь, что вы нашли это полезным. Это довольно простая вещь, мы в основном просто использовали расширение, но я чувствую, что знакомство людей с этим рабочим процессом иногда может быть полезным и помочь им преодолеть инерцию, которая может возникнуть у них при проверке новой кодовой базы и воздействии на код. И возиться - это то, что мы здесь делаем 😇

Если вам нравится то, что вы здесь увидели, скажите привет в Твиттере или заходите к нам в Дискорд. А пока сохраняйте спокойствие и продолжайте возиться!