Docker |安装卷导致错误

Docker | Mounting volumes causes error

我正在尝试设置一个 Docker 群,它将我的 3 个服务器连接在一起。群已设置好并转到 URL 我得到了相同的结果,这是完美的,正是我需要的。

但是,对于我现在工作的服务器,我在每台服务器上生成一个全局 nginx 以实现负载平衡。

服务器上会有多个配置文件,我需要这些文件才能将域映射到正确的文件夹,这是我卡住的部分 on/not 为我工作。

我有一个非常简单的 docker-compose.yml 因为我有 sh运行k 它是为了调试问题,它包含以下内容...

version: '3'
  services:
    nginx:
      image: nginx:latest
    volumes:
      - /var/www/nginx/config/:/etc/nginx/conf.d/:ro
    deploy:
      mode: global

音量返回时出现错误 "invalid mount config for type "bind": bind source path does not exist" 很明显,当我删除音量线时它工作得很好,但是我 100% 需要这条线。

我可以,在服务器内部完美导航到 /var/www/nginx/config/ 并且我的配置文件存在于其中。与另一个相同,如果我 运行 docker exec -it <container> /bin/bash 并导航到 /etc/nginx/conf.d 我可以很好地到达那里,这就是我在这里发帖的原因。

我查看了其他帖子并按照其他人所说的进行了修复,例如

但似乎没有任何效果

潜在的问题可能是您的 swarm 集群中并非所有节点都创建了目录 (/var/www/nginx/config/)。由于在 swarm 中服务可以放置在任何可用节点中(除非你设置了约束)你可能会看到这个错误。

确保在所有 3 个节点中都创建了此目录。

此外,您还可以查看 here 以定义配置。