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

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

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

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

Окно выбора конфигурации 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 пользователя такого же, который используется Вами на удаленной машине.
