gpt4 book ai didi

docker-compose 中的 Windows 10 绑定(bind)挂载不起作用

转载 作者:行者123 更新时间:2023-12-02 20:47:12 25 4
gpt4 key购买 nike

我正在使用 docker-compose 来管理多容器应用程序。其中 1 个容器需要访问主机上目录的内容。

根据有关 docker 和 docker-compose 的各种文档来源,这看起来很简单,但我正在努力让它工作。

  event_processor:
environment:
- COMPOSE_CONVERT_WINDOWS_PATHS=1
build: ./Docker/event_processor
ports:
- "15672:15672"
entrypoint: python -u /src/event_processor/event_processor.py
networks:
- app_network
volumes:
- C/path/to/interesting/directory:/interesting_directory"

运行这个我得到错误信息:

ERROR: Named volume "C/path/to/interesting/directory:/interesting_directory:rw" is used in service "event_processor" but no declaration was found in the volumes section.

I understand from the docs that a top level declaration is only necessary if data is to be shared between containers

这里不是这种情况。

我上面链接的 docker-compose 文档有一个例子,它似乎完全符合我的需要:

version: "3.2"
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static

networks:
webnet:

volumes:
mydata:

但是当我尝试时,我得到了关于语法的错误:

ERROR: The Compose file '.\docker-compose.yaml' is invalid because: services.audio_event_processor.volumes contains an invalid type, it should be a string

所以我试着一起玩:

volumes:
- type: "bind"
source: "C/path/to/interesting/directory"
target: "/interesting_directory"

错误:撰写文件 '.\docker-compose.yaml' 无效,因为:services.audio_event_processor.volumes 包含无效类型,它应该是一个字符串

又是同样的错误。

我也尝试了以下方法:

volumes:
- type=bind, source=C/path/to/interesting/directory,destination=/interesting_directory

没有错误,但附加到正在运行的容器,我看到以下两个文件夹;

type=bind, source=C

所以看起来我可以用 1 个字符串创建多个卷(尽管在这种情况下正斜杠正在切割字符串)但我没有将它映射到主机目录。

我已经阅读了文档,但我觉得我遗漏了什么。有人可以发布一个将 windows 目录从主机挂载到 linux 容器的示例,以便可以从容器中获得 windows 目录的现有内容吗?

最佳答案

好的所以这里有多个问题:

1.

我有

version: '3'

在我的 docker-compose.yml 的顶部。长语法 described here直到 3.4 才实现,所以当我将其更新为以下内容时,我不再收到奇怪的语法错误:

version: '3.6'

2.

我在 2 台 Windows PC 上使用我的 docker 帐户。根据另一个 stackoverflow 帖子的提示,我将 Docker 重置为出厂设置。我必须向 docker 提供计算机用户名和密码,并注意这是访问本地文件系统内容所必需的——此时我记得在另一台 PC 上这样做过,所以我不确定凭据是否正确.使用当前 PC 的正确凭据,我能够绑定(bind)挂载具有预期结果的卷,如下所示:

   version: '3.6'

event_processor:
environment:
- COMPOSE_CONVERT_WINDOWS_PATHS=1
build: ./Docker/event_processor
ports:
- "15672:15672"
entrypoint: python -u /src/event_processor/event_processor.py
networks:
- app_network
volumes:
- type: bind
source: c:/path/to/interesting/directory
target: /interesting_directory

现在它按预期工作。我不确定是恢复出厂设置还是更新的凭据修复了它。我会在明天使用另一台 PC 和更新时发现。

关于docker-compose 中的 Windows 10 绑定(bind)挂载不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50514179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com