docker-compose 中的 Windows 10 绑定安装不起作用

2024-02-25

我正在使用 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"

运行这个我收到错误消息:

错误:命名卷 “C/path/to/interesting/directory:/interesting_directory:rw”用于 服务“event_processor”,但在中找不到声明 卷部分。

我从文档中了解到,只有在容器之间共享数据时才需要顶级声明 https://docs.docker.com/compose/compose-file/#volumes

但这里的情况并非如此。

我上面链接的 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:

但是,当我尝试时,我收到有关语法的错误:

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

所以我试着一起玩:

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

错误:Compose 文件“.\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.

I had

version: '3'

在我的 docker-compose.yml 的顶部。长语法此处描述 https://docs.docker.com/compose/compose-file/#long-syntax-3直到 3.4 才实现,所以当我将其更新为:

version: '3.6'

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

现在它按预期工作了。我不确定是恢复出厂设置还是更新的凭据修复了该问题。明天我使用另一台电脑并更新时就会知道。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker-compose 中的 Windows 10 绑定安装不起作用 的相关文章

随机推荐

  • 缩小时材质会闪闪发光 ( Three.js r78 )

    缩小时材质会闪闪发光 Three js r78 当缩小到一定程度时 其他物体后面的物体的材质开始显现出来 它看起来与面部重叠 面部位于同一平面 时的效果非常相似 为了证明这一点我做了a fiddle https jsfiddle net w
  • 在 Shiny 和 DataTable 中像字符一样打印但像数字一样排序

    我想对用美元格式化的 DataTable 列 因此是一个字符 进行排序 我用过scales dollar 用于格式化 这会将字段转换为字符 从而导致排序问题 例如 8 gt 10 如何像数字字段一样对字段进行排序 或者 我可以将该字段保留为
  • 需要 SQL 优化(也许 DISTINCT ON 是原因?)

    相关的前一个问题 按值 而不是列 分组后从组中选择随机条目 https stackoverflow com questions 15091363 select a random entry from a group after groupi
  • 我可以在不使用语音命令的情况下从其他应用程序启动 Google Home 上的操作吗?

    我不确定这是否已经可能 我可以让另一个应用程序向 Google Home 发起操作 而不是让人通过与其对话来发起操作吗 例如 我想让 Smartthings IFTTT 要求 Google Home 播放一些内容 下面几个案例 情况 1 如
  • 将 AngularJS 指令绑定到数组的映射

    我有一个接受对象数组的指令 在标记中声明指令时 作用域具有一个对象数组 其中包含指令所需的对象 所以我需要在数组上应用映射函数 执行此操作的正确方法是什么 以便对原始数组进行的更新反映在指令内 这是一个采用幼稚方法的 Plunker 令我惊
  • 添加“System.Data.SQLite”作为参考

    当我构建用 ASP NET 和 C 完成的项目时 它产生了以下错误 命名空间 System Data 中不存在类型或命名空间名称 SQLite 您是否缺少程序集引用 因此 当我尝试将其添加为参考时 我无法在我的库中找到 System Dat
  • jQuery 获取脚本

    我目前一直在使用几个必须以非常特定的顺序加载的 JavaScript 库 由于 jQuery 的 getScript 是异步的 因此它会非常快速地开始下载所有脚本 并在完成后执行它们 由于它们不按顺序执行 我从库中收到多个错误 不幸的是我无
  • 在 Python 中的 POST 请求中传递“+”字符

    我正在尝试在 Python 脚本中进行一些自动化操作 但遇到了问题 我正在尝试向服务器发送 POST 消息 url http www example com params arg0 value arg1 value f urllib url
  • 如何撰写和提出 RFC?

    我发现 IMAPv4 有一个缺点 因为它强制用户下载整个正文 文本 HTML 附件 如何编写并提出 RFC 来解决该问题 如果您之前有撰写技术文档 提案 尤其是 RFC 的经验 请分享 实际上有一个 RFC RFC 7322 RFC 风格指
  • 如何禁用字符代码 178 (0xB2) (²) 、 179 (0xB3) (3) 和 185 (0xB9) (1) 作为数字?

    使用 SWI Prolog 生成数字时 code type X digit 结果是预期的ASCII http www asciitable com 字符代码和 178 0xB2 179 0xB3 185 0xB9 e g code type
  • 用随机数替换 pandas 数据框中的唯一值

    我有一个 pandas 数据框 我想用随机正态数替换一些唯一值 在下面的示例中 要替换的值为 0 import numpy as np import pandas as pd dates pd date range 20160101 per
  • KVO 不起作用:消息已收到但未处理

    我在使用 KVO 时遇到以下错误 它只适用于 UIViewController 的子类吗 Terminating app due to uncaught exception NSInternalInconsistencyException
  • 如何从 Bash 生成 Pusher 身份验证字符串?

    我无法生成要使用的 正确 身份验证字符串 通过curl向Pusher发送消息 这是我的脚本 当然 秘密部分被删掉了 bin bash key my key secret my secret appID my app id timestamp
  • 如何使用 jasmine 测试具有 setTimeout 的函数?

    我需要为具有以下功能的函数编写测试setTimeout 打电话进去 但我找不到我应该怎么做 这是函数 Disables all submit buttons after a submit button is pressed var bloc
  • Jenkins 重新运行设置向导

    刚刚在 Windows 服务器上安装了最新的 Jenkins 将其更改为作为服务运行 但我的登录不再有效 没问题 暂时禁用安全性 但发现我所有的插件都不见了 如何让它重新运行设置向导 正如所见第310期 https github com j
  • 如何处理 Firebase 通知,即 Android 中的通知消息和数据消息

    当用户处于前台和后台时 使用 Xamarin Android 在 firebase 中处理通知消息和数据消息的最佳方法是什么 另外 如何获取通知数据 例如特定通知的文本 PS 我访问过以下线程 但没有一个真正有帮助 当设备屏幕关闭时如何处理
  • 是否可以使用触控板进行手势操作?

    在 Chrome 中的 Macbook Pro 上 在屏幕上滑动两根手指可以前后移动 我该如何禁用此功能 并在 jQuery 或 Javascript 中创建自定义手势 我真正需要知道的是当两个手指放在触控板上时如何检测 我认为这是最好的方
  • Vue js点击获取html5属性

    我正在做一个使用 vuejs 最新版本的项目 在这个项目中 我想在点击事件上获取与 vue 关联的 html5 属性 我的按钮代码是 a href class btn btn info btn xs i class fa fa pencil
  • 将 div 滚动到另一个 div 上

    我有两个高度为 100 的 div 当你滚动时 我希望第二个 div 覆盖其他滚动 而不是向上滚动第一个 div 就像在这个网站上一样 http www endzeit ausstellung de http www endzeit aus
  • docker-compose 中的 Windows 10 绑定安装不起作用

    我正在使用 docker compose 来管理多容器应用程序 其中 1 个容器需要访问主机上目录的内容 根据 docker 和 docker compose 上的各种文档来源 这似乎很简单 但我正在努力让它工作 event process