首页 > 解决方案 > 在 Docker 容器中运行时切换 Git 分支会导致权限错误

问题描述

我在 Windows 10 上运行 Docker 19 进行开发。容器卷直接绑定到 Git 存储库文件夹并为该文件夹中的 Django 应用程序提供服务。我使用 Mingw-w64 来运行 Git(又名 Git Bash)。

有时,我会执行以下操作(或类似以下的操作):

  1. 请求 Docker 容器提供的页面。(例如,复制错误。)
  2. 切换到不同的分支。
  3. 从新分支请求 Docker 容器提供的页面。
  4. 切换到不同的分支。

在最后一个分支切换时,Git 会冻结一段时间,然后对特定文件说权限被拒绝。该文件是两个分支之间的差异,因此 Git 正在尝试更改它。

Process Explorer 告诉我这些文件已被该system进程使用,因此让它释放的唯一方法是重新启动。

我的直觉告诉我 Django Web 进程 ( manage.py runserver) 可能会锁定文件,直到请求连接完全关闭并且可能作为已建立的连接徘徊。

我的直觉对吗?如果是……为什么锁由system进程而不是 Docker 持有?在我进行分支更改之前有什么需要检查的吗?有什么办法可以完全防止它发生吗?

标签: djangowindowsgitdocker

解决方案


推荐阅读