在 WSL 上使用不正确的路径进行 Docker 组合:\\?\C:\



我已经为这个问题苦苦挣扎了一天多了,尽管在SO和其他地方也有类似的问题,但没有一个真正符合我的问题,或者解决它。对于上下文,我使用docker没有问题,只有docker compose

我正在 WSL 环境中处理一个使用 docker 编写的旧项目。当我运行时:

docker-compose -f /srv/etc/docker/docker-compose.yml -f /srv/etc/docker/docker-compose.prod.yml up --build

我收到以下错误:

OSError: Can not read file in context: \?C:Users<path>venvbinpython

其他有类似问题的路径从/mnt/c开始,这可以通过将/c挂载到该目录来解决。但是,我的错误路径与我在类似问题上看到的其他路径不匹配。

无论如何,我尝试了安装解决方案,但它并没有改变我的问题。

我也看到提到docker engine use wsl,但docker engine check没有显示wsl,只有一个叫current

我已经按照本文中的步骤让 WSL 使用 Docker for Windows,我在类似的问题中看到过 OP 以前做过的事情,或者作为解决问题的建议。

所以,有几个问题:

  • 有谁知道为什么 Docker compose 试图使用如此奇怪的路径?
  • 如何修复此路径?

我相信你遇到了 https://github.com/docker/compose/issues/7101

显然,通过调用docker-compose,我调用Docker用于Windows的docker compose,它使用Windows的python。Python的sys.platform是"win32"(当然(,这导致docker compose将该前缀添加到我的上下文中。WSL的docker-compose调用正确的python,它将sys.platform返回为linux。