【问题标题】:several development container environment with git几个带有git的开发容器环境
【发布时间】:2020-04-30 20:00:57
【问题描述】:

我正在使用 vs-code devcontainer 功能创建以下设置的容器化开发环境:

root_folder (main git repository)
|- .git
|- docker-compose.yml
|- @myapi-submodule (django python API)
  |- .devcontainer.json
|- @myclient-submodule (react js client)
  |- .devcontainer.json

docker-compose.yml中我分别创建了两个服务apiclient并挂载了它们对应的子模块文件夹。

然后我可以在 2 个单独的窗口中“在容器中打开文件夹...”,除了 git,一切都很好。我需要能够进行更改,将它们提交更改分支...从容器但由于仅安装了子模块文件夹,我根本无法使用 git。

在这种情况下我有什么选择?如何在没有父文件夹的情况下从容器中修改子模块?

【问题讨论】:

  • 您找到解决方案了吗?我猜你可以在 vs 代码之外使用 git,例如在 windows 的根项目文件夹中使用“Git bash”...

标签: git docker visual-studio-code docker-compose git-submodules


【解决方案1】:

最简单的解决方案是在您的项目根目录中创建一个 .devcontainer 目录,并在其中创建一个新的 docker-compose.yml(或者如果可能的话扩展现有的。

├── .git
├── .devcontainer
│   ├── devcontainer.json
│   ├── docker-compose-extend.yml # either extend current docker-compose file
│   ├── docker-compose.yml # or create a new one
│   └── Dockerfile # your new docker-compose.yml can also use different Dockerfile(s)
├── @myapi-submodule (django python API)
└── @myclient-submodule (react js client)

devcontainer.json 文件现在应该使用新的 docker-compose 文件。您还应该考虑将 .devcontainer 目录添加到 gitignore

【讨论】:

  • 您不应将.devcontainer 添加到.gitignore。如果您不将代码视为代码,那么自动创建开发环境有什么意义?
【解决方案2】:

我找到了解决此问题的解决方法,您需要将主仓库中的 .git 文件夹添加为挂载,如下所示:

devcontainer.json:

{
    "name": "Node.js",
    ...
    "mounts": [
        "source=${localWorkspaceFolder}/../.git,target=/workspaces/.git,type=bind,consistency=cached"
    ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-02
    • 2013-07-11
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    相关资源
    最近更新 更多