DevGang
Авторизоваться

Как стандартизировать среду разработки с помощью devcontainer.json

Современные рабочие процессы разработки программного обеспечения сложны и включают в себя множество инструментов и зависимостей.

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

Одним из решений является использование виртуальных сред для изоляции зависимостей. Это все равно может потребовать от вас установки и управления установкой и настройкой.

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

Для разработки вы можете использовать Docker-контейнер как полнофункциональную среду разработки. Это похоже на вашу производственную среду, но со всеми компиляторами, отладчиками, инструментами сборки, SDK, инструментами повышения производительности и другими. Это будет ваш контейнер разработки или контейнер разработки.

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

В этом руководстве вы узнаете о стандарте devcontainer.json, его назначении, о том, как его настроить и как использовать его для личного или делового использования. Это поможет вам повысить вашу производительность как инженера.

Что такое контейнер разработки?

Контейнеры разработки, также известные как контейнеры разработки, предоставляют полную среду разработки, упакованную в контейнер, к которому можно легко получить доступ через предпочитаемую вами интегрированную среду разработки через защищенную оболочку (SSH). Эта настройка устраняет любые препятствия, которые мешают вашему рабочему процессу, начиная от низкой производительности и заканчивая меньшей пропускной способностью.

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

Аспект изоляции также гарантирует, что ваши зависимости не будут перекрываться и нарушать вашу локальную среду. Вся конфигурация контейнера хранится в стандартном файле .devcontainer.json от Microsoft, который служит инструкциями по упаковке для вашей среды.

Структура контейнера разработки. Откуда: containers.dev

В файле используется структурированный формат метаданных JSON с комментариями (jsonc), который вы можете адаптировать к своим конкретным потребностям. Например, вы можете добавить инструменты разработчика, такие как git, отладчик и другие конфигурации, такие как различные расширения.

Где вы можете его использовать?

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

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

Создав файл компоновки Docker, вы можете легко настроить создание базы данных и предоставить переменные среды для создания автономной среды. Эти организованные многоконтейнерные установки (как с базой данных, так и с языком программирования) устанавливаются как отношения «родитель-потомок» и могут использоваться в сложных случаях.

Посмотрите на приведенную ниже конфигурацию в качестве примера, который использует Compose для подключения пространства сборки:

{
"name": "Python 3 & PostgreSQL",
"dockerComposeFile": "docker-compose.yml",
"service": "app",
"workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}"
}

В этом примере ваш Dev-контейнер использует файл Docker Compose и ссылается на инструкции по созданию интегрированного рабочего пространства Python и PostgreSQL. Эта структура может помочь в разработке приложений CRUD, не пытаясь настроить базу данных и конфигурацию системы для ее поддержки каждым разработчиком.

Проблемы, которые решают контейнеры разработки

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

Решение проблем с конфигурацией установки

Поддержание и управление локальной средой может оказаться трудоемкой задачей. Зачастую это предполагает использование различных инструментов и конфигураций, что делает процесс утомительным. Наличие чего-то, что стандартизирует этот процесс, может сэкономить много времени.

Стандартизация инструкций по сборке проекта

Написание документации для обновлений и изменений зависимостей может оказаться сложной задачей. Лучшим подходом было бы использовать код для упрощения процесса, позволяя любому отправлять продукт, не увязая в документации или «это работает на моей машине».

Обеспечение изоляции сред разработки

Разработчик программного обеспечения может одновременно работать над разными проектами со множеством движущихся частей. Что, если вы сможете изолировать среды, предотвращая конфликты с другим программным обеспечением в хост-системе и обеспечивая чистую, контролируемую среду для разработки? Теперь это возможно :)

Обеспечение согласованности между командами разработчиков

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

Упрощение процессов адаптации и обучения

Изучение новых вещей важно, но может быть непросто. Так какой же лучший способ учиться, чем практиковать новый язык или структуру? Быстрый запуск изолированных сред может помочь поддерживать чистоту машин.

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

Как создать свой первый девконтейнер

Теперь, когда вы знаете все преимущества, я помогу вам создать ваш первый контейнер разработки. Поскольку это вводное руководство, вы узнаете, как это сделать в базовой среде Go.

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

Предварительные условия

Вот предварительные условия для создания шаблона:

  • Инструменты для запуска Dev Container: Docker или любой другой контейнерный движок.
  • Инструменты для создания шаблонов и подключения к Dev Container: Visual Studio Code.
  • Инструменты для управления логикой подключения и создания: расширение Visual Studio Code Dev Containers.
Примечание: После создания шаблона вы можете переключиться на предпочитаемую вами среду IDE с другими серверными модулями, как мы увидим в следующих разделах. Просто думайте о файле .devcontainer.json как об источнике достоверной информации об окружающей среде, и им можно легко поделиться.

Как создать простой контейнер разработки

Вы можете создать контейнер разработки с нуля или использовать утилиту VSCode. Запустить утилиту просто. Чтобы настроить контейнер разработки, просто используйте параметр «Контейнеры разработки: Добавить файлы конфигурации контейнера разработки…» на палитре команд (Ctrl+Shift+P):

Пример конфигурации для контейнеров разработки из палитры команд VSCode
Пример конфигурации для контейнеров разработки из палитры команд VSCode

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

Базовая конфигурация контейнера разработки
Базовая конфигурация контейнера разработки

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

Просто прокрутите вниз и сделайте свой выбор.

Версия выбранного файла базовой конфигурации
Версия выбранного файла базовой конфигурации

Следующим шагом является импорт «Функций», которые представляют собой автономные единицы установочного кода, которые помогают включать определенные инструменты или контейнеры в конфигурацию вашего контейнера разработки. Эти функции могут варьироваться от новых инструментов до конкретных настроек, о которых вы можете узнать больше здесь.

Но для базовой и простой среды Go мы пропустим этот шаг.

Бесплатные функции, которые улучшат ваше рабочее пространство
Бесплатные функции, которые улучшат ваше рабочее пространство

Нажмите «ОК», чтобы создать базовый файл Go .devcontainer.json в каталоге .devcontainer:

~/Code/devcontainer-new main +4 !4 ❯ tree -a
.
├── .devcontainer
│   └── devcontainer.json

Поздравляю! Теперь у вас есть изолированная среда, которой можно поделиться с кем угодно.

Как использовать VSCode для настройки контейнера разработки

Чтобы запустить эту конфигурацию, вы можете нажать «Повторно открыть в контейнере» как самый простой способ, как показано ниже:

Пример файла Dev Container с Go 1.21
Пример файла Dev Container с Go 1.21

Расширение извлечет образ «mcr.microsoft.com/devcontainers/go:1-1.21-bullseye», а затем создаст в нем SSH-сервер.

Запуск контейнера разработки
Запуск контейнера разработки

После успешной сборки версии Go вы можете уверенно подключаться к среде по SSH и выполнять свои операции. Вы увидите, что версия Go такая же, как та, которую вы создали, и соединение происходит из вашего Dev-контейнера, что делает соединение успешным:

Контейнер разработки, работающий локально
Контейнер разработки, работающий локально

Dev Container CLI

Devcontainers CLI — это интерфейс командной строки, который помогает вам выполнять, собирать и запускать контейнер из конфигурации вашего devcontainer.

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

Хотя инструмент интересен, многие функции, перечисленные здесь, еще не запущены:

Дорожная карта функций
Дорожная карта функций

Как использовать Dev-контейнеры на полную мощность

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

Есть несколько вариантов, которые могут вам помочь. Первый — GitHub Codespaces, который помогает запускать инфраструктуру под управлением GitHub в Azure.

Но может потребоваться использование выделенного оборудования из вашего кластера Kubernetes, частного или публичного облака. Как ты делаешь это? Вы можете использовать клиентские инструменты с открытым исходным кодом, такие как DevPod, которые помогут вам выполнить развертывание в нужной инфраструктуре.

DevPod UI
DevPod UI

В настоящее время этот инструмент имеет более 4,4 тыс. звезд и с каждым днем ​​быстро растет и становится все более популярным под лозунгом «Предоставление возможностей пользователю». Любая инфраструктура, любая IDE и Unopinionated`:

История роста GitHub — DevPod
История роста GitHub — DevPod

Этот инструмент не требует ограничений, а это означает, что вы можете легко использовать его в различных инфраструктурах, IDE и языках программирования.

Например, если вам нужен конкретный бэкэнд у облачного провайдера, вы можете сделать это с помощью уже доступных провайдеров или создать своего собственного, как 7 провайдеров сообщества:

Поставщики DevPod
Поставщики DevPod

Этот инструмент также обеспечивает единообразную среду разработки, на которую можно неоднократно полагаться где угодно и подключаться к любому редактору кода/IDE, начиная от JetBrains, Jupyter или VSCode.

Как запустить среду разработки с помощью DevPod

Этот инструмент предлагает как настольную версию, так и версию с интерфейсом командной строки, поэтому вы можете использовать ту, которая вам больше подходит. При использовании DevPod Desktop для создания среды процесс выглядит следующим образом:

Шаг 1. Установите DevPod по официальной инструкции.

Шаг 2. Добавьте поставщика через «Поставщики» > «+ Добавить». Выберите провайдера и нажмите «Продолжить».

Поставщик DevPod AWS  
Поставщик DevPod AWS  

Шаг 3. Введите источник рабочей области, указав путь к devcontainer.json, который может быть удаленным или локальным репозиторием или образцом:

Выбор IDE и провайдера  
Выбор IDE и провайдера  

Шаг 4. Выберите IDE по умолчанию и нажмите «Создать рабочую область»:

Создать рабочую область
Создать рабочую область

Теперь вы можете создать и настроить свое приложение на работающем экземпляре:

Контейнер разработки, работающий на вашем локальном компьютере
Контейнер разработки, работающий на вашем локальном компьютере

Поздравляем! Вы успешно настроили свой первый Dev-контейнер 🎉

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

Последние мысли

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

Это также поможет вам легко привлечь новых членов команды и поддерживать единообразный пользовательский опыт.

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

Вы можете присоединиться к DevPod Slack, чтобы узнать больше.

Источник:

#JavaScript
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу