Docker compose Docker Swarm错误-类型的装载配置无效

Docker compose Docker Swarm错误-类型的装载配置无效,docker-compose,docker-swarm,docker-stack,Docker Compose,Docker Swarm,Docker Stack,这是我的Docker compose/stack文件。在单个节点上部署时,一切正常,但在多个节点上部署时,会出现以下错误: 类型绑定源路径的装载配置无效不存在 我知道卷路径也会出现在其他节点上,但我认为这是一种非常糟糕的做法,我的其他两个节点只是工作节点。我怎样才能解决这个问题?希望有一个解决方案可以让我保留卷,因为我使用相同的文件来构建我的图像 有人能帮我吗 谢谢:-)如果可能,您可以将此服务限制在具有所需主机路径的节点上使用。然而,我猜在这个用例中这不是一个选项。 在swarm部署中不应该使

这是我的Docker compose/stack文件。在单个节点上部署时,一切正常,但在多个节点上部署时,会出现以下错误:

类型绑定源路径的装载配置无效不存在

我知道卷路径也会出现在其他节点上,但我认为这是一种非常糟糕的做法,我的其他两个节点只是工作节点。我怎样才能解决这个问题?希望有一个解决方案可以让我保留卷,因为我使用相同的文件来构建我的图像

有人能帮我吗


谢谢:-)

如果可能,您可以将此服务限制在具有所需主机路径的节点上使用。然而,我猜在这个用例中这不是一个选项。 在swarm部署中不应该使用主机装载的卷,因为这会在节点之间的文件系统中造成冗余数据。(所有节点上都需要存在所有文件)

一种解决办法是实施:

卷:
例子:
驾驶员选择:
类型:“nfs”
o:“地址=,无锁,软,rw”
设备::/docker/path/to/configs
不过,此解决方案要求您托管NFS服务器。还要记住,这种方法适用于配置,但不应用于需要提供高性能访问的文件系统


关于让docker compose文件在不同环境中保持一致的问题:虽然在技术上可以做到这一点,但大多数现代项目都包含一个基本的compose文件以及一个针对卷、网络、图像等的环境特定覆盖。在群集中,您的服务将随机部署在可用节点上。 我假设您的“待装载目录”位于manager节点上,因此在manager节点上部署所需的服务,如下所示

deploy:
    placement:
        constraints:
            - node.role == manager

在这种情况下,依赖于主机卷并不理想。我建议创建一个
Dockerfile
,并在构建过程中复制证书和主题。然后简单地将其添加到yml中。
volumes:
  example:
    driver_opts:
      type: "nfs"
      o: "addr=<NFS_SERVER_IP>,nolock,soft,rw"
      device: ":/docker/path/to/configs"
deploy:
    placement:
        constraints:
            - node.role == manager