VS Интеграция кода с C ++ средой разработки внутри Docker - PullRequest
0 голосов
/ 02 февраля 2019

Я хотел бы запустить VSCode на моем хост-компьютере, но (используя его функции / расширения) запускайте инструменты изнутри dev-env, который находится внутри моего контейнера Docker.

Я настроил образ докеракак среда разработки для C ++.Давайте назовем это dev-env.

Он основан на Linux и содержит необходимые библиотеки, наборы инструментов кросс-компиляции и различные инструменты, которые мы используем для сборки и тестирования нашего программного обеспечения (cmake, ninja, cppcheck, clang-tidy и т. Д.)

У меня есть GIT-репозиторий на хост-машине, который я монтирую внутри докера.Таким образом, мой обычный рабочий процесс - запуск Docker:

host$
host$ docker run -v path/to/my/codebase/on/host:path/inside/docker -h dev-env --rm -it image_name bash
docker#
docker# cd build; cmake ..
 etc...

И поэтому я могу создавать, тестировать и запускать свои инструменты внутри моей унифицированной среды разработки внутри докер.

Теперь цель - вывести его из терминала в мир IDE.Я использую VS Code.

На хост-машине я открываю папку с базой кода в VSCode.Поскольку он отображается внутри докера, любые изменения, которые я делаю локально, также будут доступны внутри dev-env.

Но если я сейчас что-нибудь запусту из VSCode (CMake configure, build и т. Д.), Он, конечно, вызоветинструменты изнутри моей хост-машины - которые, конечно, не будут работать, и это не то, что я хочу.

С задачами, определенными в tasks.json, я мог бы, вероятно, справиться с тем, чтобы они выполняли что-то вроде docker exec CONTAINER my_command

С расширениями становится все сложнее:

Мне бы хотелось, чтобы расширение VSCode CMake Tools было настроено таким образом, чтобы при запуске Cmake Configure (в VSCode, работающем на моем хост-компьютере), он фактически будет запускать команды cmake из в контейнере Docker, используя cmake, установленный внутри Docker, а не с моего хост-компьютера.

Временное решение: переадресация дисплеячерез X / VNC

Итак, установка VSCode внутри Docker, запуск сервера x / vnc внутри Docker, открытие порта и подключение к нему с главного компьютера.ne.

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

Другое решение, о котором я могу подумать:

Экземпляр VSCode, работающий в качестве сервера внутри докера.Экземпляр VSCode на вашем хосте, соединяющийся с экземпляром сервера.Вы выполняете всю работу внутри VSCode вашего хоста, но каждый раз, когда вы запускаете команду, она выполняется экземпляром сервера, который выполняет все внутри Docker.Я думаю, что это потребует поддержки со стороны VSCode (или, возможно, расширение).Расширение VSCode Live Share не предназначено именно для этого, но его функциональные возможности могут помочь.Я еще не проверял это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...