【问题标题】:How to (semi-)automatically sync local files with remote devcontainer?如何(半)自动将本地文件与远程 devcontainer 同步?
【发布时间】:2021-10-23 13:16:57
【问题描述】:

我的目标

我已经将 devcontainers 与 WSL2 结合使用了一段时间。但我一直遇到问题,除此之外,我喜欢将笔记本电脑的资源卸载到服务器上。将容器移动到本机 Linux 服务器将解决我的问题。

我的理想情况是有一个解决方案,就像在我的 Windows 笔记本电脑上本地工作一样(以后可能会转移到 Macbook),但使用 Linux 服务器的设施(具有 systemd 和 netns)并将工作负载转移到那里好吧,所以我的笔记本电脑听起来不像吸尘器。

我的旅程

我正在尝试按照此处所述设置远程容器:https://code.visualstudio.com/remote/advancedcontainers/develop-remote-host

实际上容器运行良好,我正在使用第二个存储解决方案,这意味着我将以下内容添加到我的 .devcontainer.json:

"workspaceMount": "source=/home/marvink/code,target=/workspaces,type=bind,consistency=cached"

我的工作流程目前看起来像这样:

  • 在本地克隆项目(项目中已包含 .devcontainer)
  • 将上面的workspaceMount添加到devcontainer.json
  • 远程克隆项目(例如到 /home/marvink/code/new-project)
  • 在本地打开项目
  • 在容器中构建并重新打开
  • 在遥控器上处理文件

我的问题

这可行,但现在我的本地驱动器上有文件从未被触及,这并不理想但不是灾难,更大的问题是当我想更新 devcontainer 时。我需要在本地(在单独的窗口中)执行此操作,如果我想将其提交到 git 并且偏离课程,我需要手动将其复制粘贴到远程我有时会忘记这一点并尝试远程编辑它,这会导致很多沮丧(有时它似乎确实使用了远程配置,但这可能是一个错误?)。

这就是为什么我要设置 rsync 两种方式来同步文件的更改,并且作为奖励,我可以在离线时在本地编辑文件。在链接中描述了如何手动操作,但我希望它自动化,这样我就不会忘记或犯错误。

我可以从 Powershell 运行一个单向同步的 rsync 命令,并且我可以将其扩展为双向同步:

wsl rsync -rlptzv --progress --exclude=.git '$PWD' 'marvink@s-dev01:~/code/new-project'

这需要在本地运行,但我找不到这样做的方法。例如,我需要在本地运行一项任务,但在远程 (https://github.com/microsoft/vscode-remote-release/issues/168) 上工作时这是不可能的。

其他方式对我来说似乎不是一个选择,因为我不想暴露我的笔记本电脑上的任何端口,并且防火墙会根据我所在的位置阻碍。

我的问题

我的工作流程似乎仍然有些复杂,因此我愿意接受这方面的建议,但有关于如何同步我的工作区文件的任何想法吗?

【问题讨论】:

    标签: vscode-remote


    【解决方案1】:

    如果您将代码存储在远程服务器上,则不需要本地版本的代码(包含 .devcontainer 文件夹)。您应该能够使用 Remote - SSH 扩展在 VScode 中打开 ssh 目标,这是link you added 中推荐的方法。扩展远程 - 容器“堆叠”在 SSH 扩展之上,因此一旦通过 SSH 连接,您就可以使用远程服务器上的 .devcontainer.json 配置连接到容器。

    如果您不想使用扩展并使用绑定挂载 + 在 settings.json 文件中指定 docker.host,则可以使用同一篇文章中的方法通过 SSHFS、docker machine 或 rsync 同步代码.

    【讨论】:

      猜你喜欢
      • 2018-09-09
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多