VS Code与Docker内部C ++开发环境的集成

时间:2019-02-02 14:04:40

标签: c++ docker cmake visual-studio-code

我想在主机上运行VSCode,但是(使用其功能/扩展)从Docker容器中的dev-env内部启动工具。

我已经将docker映像设置为C ++的开发环境。我们称之为dev-env

它基于Linux,包含必需的库,交叉编译工具链以及我们用于构建和测试软件的各种工具(cmake,ninja,cppcheck,clang-tidy等)

我在主机上有一个GIT存储库,该存储库安装在docker内部。 所以我通常的工作流程是运行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...

因此,我可以在Docker的统一开发环境内部内构建,测试和运行工具。

现在,目标是将其从终端中带到IDE世界。 我碰巧用了VS Code。

在主机上,我在VSCode中打开我的代码库文件夹。由于它是在docker内部映射的,因此我在本地所做的任何更改也将在dev-env内部可用。

但是,如果我现在从VSCode运行任何东西(CMake配置,构建等),它当然会从我的主机中调用这些工具-这当然是行不通的,不是我想要的。

使用tasks.json中定义的任务,我可能可以通过运行类似docker exec CONTAINER my_command的东西来进行管理

扩展变得更加复杂:

我想要的是配置了 VSCode CMake工具扩展,这样,当我运行Cmake Configure(在运行于主机上的VSCode中)时,它实际上将在内部运行cmake命令 Docker容器,而不是从我的主机上使用安装在Docker中的cmake。

临时解决方案:通过X / VNC转发显示

因此,在Docker中安装VSCode,在Docker中运行x / vnc服务器,公开端口并从主机连接到它。

是的,有可能,我在这里运行它。但是它有许多限制和问题,其中最痛苦的是滞后/延迟。 一般来说,这是一个糟糕的解决方案,因此我会强烈建议避免这种情况。

我可以考虑的另一种解决方案:

VSCode实例在docker内部作为服务器运行。 主机上的VSCode实例连接到服务器实例。 您可以在主机VSCode中完成所有工作,但是只要您运行命令,该命令就会由服务器实例执行,该服务器实例将在Docker内部运行所有内容。 我想这将需要VSCode(或可能是扩展)的支持。 VSCode Live Share扩展名不完全是为此而创建的,但是它的功能可能会起作用。我还没有测试。

0 个答案:

没有答案