VSСode. Как настроить окружение для разработки в Docker на удаленном сервере через SSH

Подключиться через SSH к удаленной машине через VSСode. Для этого выберем Command Palette из меню View, вводим > и выбираем команду Remote SSH: Connect to Host....

Вот так примерно будет выглядеть палитра команд (Command Palette)

Вот так примерно будет выглядеть палитра команд (Command Palette)

После этого необходимо выбрать хост или ввести команду, по которой вы подключаетесь в терминале.

Выбираем хост из предложенных. Список решил закрыть по причине безопасности

Выбираем хост из предложенных.
Список решил закрыть по причине безопасности

А тут вводим команду подключение, как в терминале

А тут вводим команду подключение, как в терминале

Если нужного хоста нет, необходимо также указать расположение конфигурации SSH-клиента. Обычно, это ~/.ssh/config

Окно выбора конфигурации SSH

Окно выбора конфигурации SSH

После настройки можно зайти на машину через IDE

Открыть репозиторий через Docker-контейнер. Для этого:
— Зайдем в репозиторий

Это можно сделать через меню

Это можно сделать через меню

И выбрать репозиторий

И выбрать репозиторий

 — Создаем папку .devcontainer
— Создаем файлы devcontainer.json и Dockerfile.dev.

devcontainer.json хранит метаданные для настройки окружения для разработки в виде словаря. Подробнее можно почитать здесь. Потребуются следующие параметры:
name — имя проекта, которое будет отображаться в самом редакторе. В текущем примере это i.lucky_dev_lightning
context — контекст, в котором будет идти разработка (иными словами, репозиторий, который будет корневым). В текущем примере, это просто .. (уходим на уровень выше папки .devcontainer)
dockerFile — имя docker-файла, по которому будет создаваться образ → сам контейнер. В текущем примере это Dockerfile.dev.
extensions — перечень расширений, которые необходимы для работы над проектом. Более детально про расширения можно посмотреть здесь. Имена расширений здесь имеют следующий вид:
@
Здесь важно фиксировать версию каждого расширения, потому что может случиться неожиданная ситуация, в результате которой работа может затянутся (встроенный линтер внезапно начнет выдавать ошибки, которых раньше не было, тесты не начнут заводиться из редактора и пр.). Обычно для работы с проектами на Python я использую следующий набор расширений:

[
  "ms-python.python@2022.18.2", // для работы на Python
  "eamodio.gitlens@12.1.1", // надстройка для работы с git
  "GrapeCity.gc-excelviewer@4.2.55", // редактор таблиц
  "njpwerner.autodocstring@0.6.1", // автодобавление docsting
  "KevinRose.vsc-python-indent@1.17.0", // автовыравнивание
  "RobbOwen.synthwave-vscode@0.1.14", // просто цветовая схема (можно не брать)
  "kaih2o.python-resource-monitor@0.1.9" // мониторинг использования RAM/CPU (можно не брать)
]

runArgs — список параметров, которые будут использовать для команды run контейнера. В текущем примере я использую:

[
  "--name",
  "i.lucky_dev_lightning"
]

remoteUser — задание non-root пользователя такого же, который используется Вами на удаленной машине.

© Habrahabr.ru