Docker-使用不正确的路径在 WSL 上撰写:\\?\C:\

Docker-compose on WSL using incorrect path: \\?\C:\

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

我正在 WSL 环境中开发一个使用 docker compose 的旧项目。当我 运行:

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>\venv\bin\python

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

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

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

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

所以,有几个问题:

相信你运行成https://github.com/docker/compose/issues/7101

Apparently by calling docker-compose I was calling Docker for Windows' docker compose, which uses windows' python. Python's sys.platform is 'win32' (of course), and that was causing docker compose to add that prefix to my context. WSL's docker-compose calls the correct python, which returns sys.platform as linux.