DevContainers -- нужны ли

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

Когда это надо?

  1. Сложные зависимости (как правило куча нативных библиотек, которые еще и обновляются регулярно)
  2. Несовместимость железа (например, требуется GPU от Nvidia, а у разработчиков Macbookи)
  3. Слабое локальное железо
  4. Почему-то активно продвигается как средство для быстрого развертывания проектов. Но в этом пункте не согласен: обычно проекты не требуют какого-то долгого развертывания, поэтому для большинства проектов мимо.

В остальных случаях, все-таки лучше полностью локально (используя разные менеджеры версий языков и пакетов, а так же Docker / Docker Compose).

Сейчас инициативу активно развивает Microsoft в рамках своего VS Code и сайта containers.dev. Так же инициативу поддерживает JetBrains и их IDE.

В чем отличие от Docker / Docker compose? Докер предназначен для запуска, иногда для сборки. А девконтейнеры для абсолютно всей работы: локально ничего нет и не настраивается, а все утилы от системы контроля версий и далее, которые нужны для разработки, именно в контейнере. Собстенно IDE (что VS Code, что JetBrains) наполовину запускаются в контейнере, а наполовину локально (так называемый толстый клиент, если кто-то помнит такой термин). Работа с утилами происходит либо через IDE, либо через терминал (так же встроенный в IDE).

Попробовал девконтейнер на удаленную машину в PyCharm. Там сложный проект и требуются определенные Linux-библиотек и железо. Даже удивительно, что нормально заработало (на фоне крайне бажной поддержки remote interpreter через Docker в PyCharm).

Так что обычно не надо, а вот если надо, то весьма удобно.