use*_*074 1 windows docker docker-compose docker-volume
我正在使用 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"
Run Code Online (Sandbox Code Playgroud)
运行此我收到错误消息:
错误:命名卷“C/path/to/interesting/directory:/interesting_directory:rw”用于服务“event_processor”,但未在卷部分找到声明。
这不是这里的情况。
我上面链接的 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:
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试时,我收到有关语法的错误:
错误:撰写文件 '.\docker-compose.yaml' 无效,因为:services.audio_event_processor.volumes 包含无效类型,它应该是字符串
所以我试着一起玩:
volumes:
- type: "bind"
source: "C/path/to/interesting/directory"
target: "/interesting_directory"
Run Code Online (Sandbox Code Playgroud)
错误:撰写文件 '.\docker-compose.yaml' 无效,因为:services.audio_event_processor.volumes 包含无效类型,它应该是字符串
所以又是同样的错误。
我也尝试了以下方法:
volumes:
- type=bind, source=C/path/to/interesting/directory,destination=/interesting_directory
Run Code Online (Sandbox Code Playgroud)
没有错误,但是附加到正在运行的容器上,我看到了以下两个文件夹;
type=bind, source=C
Run Code Online (Sandbox Code Playgroud)
因此,我似乎能够使用 1 个字符串创建多个卷(尽管在这种情况下正斜杠正在切割字符串),但我没有将其映射到主机目录。
我已经阅读了文档,但我想我错过了一些东西。有人可以发布一个将 Windows 目录从主机安装到 linux 容器的示例,以便容器中可以使用 windows 目录的现有内容吗?
好的,所以这里有多个问题:
1.
我有
version: '3'
Run Code Online (Sandbox Code Playgroud)
在我的 docker-compose.yml 的顶部。此处描述的长语法直到 3.4 才实现,因此当我将其更新为以下内容时,我不再收到奇怪的语法错误:
version: '3.6'
Run Code Online (Sandbox Code Playgroud)
2.
我在 2 台 Windows PC 上使用我的 docker 帐户。根据另一篇 stackoverflow 帖子的提示,我将 Docker 重置为出厂设置。我不得不向 docker 提供计算机用户名和密码,并告知这是访问本地文件系统内容所必需的 - 此时我记得在另一台 PC 上执行此操作,因此我不确定此凭据是否正确. 使用当前 PC 的正确凭据,我能够使用预期结果绑定安装卷,如下所示:
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
Run Code Online (Sandbox Code Playgroud)
现在它按预期工作。我不确定是恢复出厂设置还是更新的凭据修复了它。明天当我使用另一台PC并更新时会发现。
| 归档时间: |
|
| 查看次数: |
8754 次 |
| 最近记录: |