我已经为这个问题苦苦挣扎了一天多了,尽管在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。