Этот туториал рассчитан на людей, которые недавно вошли в коммерческую разработку и только начинают свою трудовую деятельность. Не исключаю, что ветеранам он также может быть полезен.
Для того, чтобы вести разработку на удаленной машине в Docker-контейнере, необходимо:
-
Иметь удаленный доступ по протоколу SSH к машине с ОС Ubuntu
-
Иметь установленный Docker на удаленной машине
-
Установленный VSСode на локальной машине
-
Настроенный доступ по протоколу SSH к github
-
Копия репозитория на удаленной машине, сделанная через
git clone
В нашем примере п.5 будет fork от pytorch-lightning. Я буду работать через mac OS.
Для работы в контейнере на удаленной машине, нужно сделать следующее:
-
Открыть на локальной машине редактор VSСode и установить расширение Remote Development. В результате должны появиться следующие компоненты (нам потребуются первые два):
— Remote Containers или Dev Containers — инструменты для разработки внутри Docker-контейнера
— Remote — SSH — инструменты для разработки на удаленной машине с обменом данных по протоколу SSH
— WSL — расширение для работы в Linux-среде через Windows (Windows Subsystem for Linux)
Вот так примерно будет выглядеть окно для работы с расширениями -
Подключиться через 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— перечень расширений, которые необходимы для работы над проектом. Более детально про расширения можно посмотреть здесь. Имена расширений здесь имеют следующий вид:
<EXTENSION_NAME>@<VERSION>
Здесь важно фиксировать версию каждого расширения, потому что может случиться неожиданная ситуация, в результате которой работа может затянутся (встроенный линтер внезапно начнет выдавать ошибки, которых раньше не было, тесты не начнут заводиться из редактора и пр.). Обычно для работы с проектами на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пользователя такого же, который используется Вами на удаленной машине. -
Выбрать
Command Paletteиз менюView, вводим>и выбираем командуRemote-Containers: Open Folder in Container...
Выбираем Remote-Containers: Open Folder in Container...
и репозиторий -
Подождать, пока соберется контейнер
Примерно такие логи должны отображаться -
После успешной сборки образа и запуска контейнера можно открыть терминал и убедиться по командной строке, что мы в контейнере
Репозиторий теперь находится в workspace, а не в open-cource. Также видно, что в имени машины стоит ID контейнера 9a5e52adda9a Обратите внимание на название проекта (в IDE) и на название контейнера (через
docker ps -a). Теперь проще ориентироваться среди запущенных контейнеров и среди нескольких проектов на VSСode. -
Profit!=)
Если туториал окажется полезен/недостает деталей, пишите, буду рад обратной связи! Есть также мысли сделать похожие туториалы на других ОС (Ubuntu, Windows 11).
ссылка на оригинал статьи https://habr.com/ru/articles/734062/
Добавить комментарий