Docker compose Docker工具箱窗口-无效的卷规范

Docker compose Docker工具箱窗口-无效的卷规范,docker-compose,Docker Compose,编辑:问题在于未设置COMPOSE\u CONVERT\u WINDOWS\u路径环境变量。我试着将它添加到Dockerfile和.env文件中,但没有设置它。我无法设置任何新的环境变量。它就像是从缓存的Dockerfile构建它 删除容器后,我运行了docker composer up,但这并没有重新创建新容器,即使在添加--强制重新创建时,它也从旧Dockerfile创建了容器。因此,我运行了docker build./,它构建了一个新的容器,重新安装了所有的包,它说它正在设置新的环境变量,

编辑:问题在于未设置
COMPOSE\u CONVERT\u WINDOWS\u路径
环境变量。我试着将它添加到
Dockerfile
.env
文件中,但没有设置它。我无法设置任何新的环境变量。它就像是从缓存的Dockerfile构建它

删除容器后,我运行了
docker composer up
,但这并没有重新创建新容器,即使在添加
--强制重新创建
时,它也从旧Dockerfile创建了容器。因此,我运行了docker build./,它构建了一个新的容器,重新安装了所有的包,它说它正在设置新的环境变量,但在完成的容器中,当我检查运动学时,我看到新的环境变量没有设置。但我第一次构建容器时设置的所有旧环境变量都已设置。我不知道为什么会发生这种情况,为什么我不能从更新的Dockerfile创建一个新的容器

我发现了许多关于此错误的线程,它发生在尝试在Windows docker工具中装入卷时。当我运行
docker compose up
时,我得到以下错误:

ERROR: for web  Cannot create container for service web: Invalid bind mount spec "C:\\path\\to\\project:/app:rw": Invalid volume specification: 'C:\path\to\project:/app:rw'
[31mERROR[0m: Encountered errors while bringing up the project.
ERROR: for web  Cannot create container for service web: create \c\path\to\project: "\\c\\path\\to\\project" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed
docker compose
文件中,我有以下内容:

    volumes:
        - ./:/app
我尝试设置此环境变量:

COMPOSE_CONVERT_WINDOWS_PATHS=1
到1,因为这在另一个线程中对某些人有效,但在本例中不起作用。我尝试以类似linux的格式添加绝对路径:

    volumes:
        - /c/path/to/project:/app
我得到了这个错误:

ERROR: for web  Cannot create container for service web: Invalid bind mount spec "C:\\path\\to\\project:/app:rw": Invalid volume specification: 'C:\path\to\project:/app:rw'
[31mERROR[0m: Encountered errors while bringing up the project.
ERROR: for web  Cannot create container for service web: create \c\path\to\project: "\\c\\path\\to\\project" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed
请注意,它反转了正斜杠。更改:

ENV COMPOSE_CONVERT_WINDOWS_PATHS=0
这样的0不会改变任何事情

如果我给一个Windows格式的绝对目录,我会再次得到第一个错误。如果我指向一个不存在的目录,我就会得到这两个错误


这里有人想出了解决这个问题的方法吗?

因此,如果这个问题存在,您应该创建一个名为COMPOSE\u CONVERT\u Windows\u path的新Windows环境变量,并将其设置为1。或者,您可以在docker-compose.yml路径中创建.env文件,该路径包含以下内容:

 COMPOSE_CONVERT_WINDOWS_PATHS=1


docker cli(powershell)似乎没有读取您的
COMPOSE\u CONVERT\u WINDOWS\u path=1
环境变量。您可以尝试从powershell控制台运行
Get childItem Env:
命令,以获取已在powershell控制台中设置的环境变量列表。输出如下所示:

Name                           Value
----                           -----
COMPOSE_CONVERT_WINDOWS_PATHS  1
COMSPEC                        C:\WINDOWS\system32\cmd.exe
DOCKER_CERT_PATH               C:\Users\devsa\.docker\machine\machines\default
DOCKER_HOST                    tcp://192.168.99.100:2376
DOCKER_TLS_VERIFY              1
...
如果在powershell控制台中未看到
COMPOSE\u CONVERT\u WINDOWS\u PATHS=1
变量,则表示尚未设置该变量。要通过powershell控制台设置环境变量,请尝试以下命令:

$env:COMPOSE\u CONVERT\u WINDOWS\u path=1


它将在power shell控制台中设置环境变量。再次尝试运行
Get childItem Env:
命令,检查变量是否已设置。如果已设置变量,则可以尝试再次运行
docker compose up-d

将环境变量设置为compose\u CONVERT\u WINDOWS\u PATHS=1后,请在docker compose中尝试以下设置

- ./app-demo:/dockermount under volumes

在设置COMPOSE\u CONVERT\u WINDOWS\u PATHS环境变量后,我遇到了同样的错误,我在Docker Terminal中使用了/c/path/to/project:/app,这对我来说是有效的!可能重复的