使用 docker stack 进行卷挂载

Nir*_*raj 6 docker docker-compose docker-swarm docker-stack

以下是我的 docker-stack 文件。

\n\n
version: "3"\nservices:\n  my-app:    \n    image: my-image:latest    \n    volumes:\n      - ./certs:/certs   \n    ports:\n      - 6401:6401\n    networks:\n      my-net:        \n         ipv4_address: 192.168.0.4\nnetworks:\n  my-net:\n    external: true\n
Run Code Online (Sandbox Code Playgroud)\n\n

它在我的机器上运行良好,将证书文件夹绑定到容器内的证书。但是在我的 CI 管道中不起作用,我在 docker-stack-node 映像中部署此服务。我得到的错误是

\n\n
\n

“bind”类型的安装配置无效:绑定安装源路径\n不存在。

\n
\n\n

我读到,如果将主机路径绑定安装到 service\xe2\x80\x99s 容器中,则该路径必须存在于每个 swarm 节点上。所以,我想我需要创建一个命名卷。但是,对于指定卷,我无法指定证书的源路径。这很令人困惑。有人可以帮忙吗?

\n

D. *_*son 2

要绑定到目录,该目录必须存在于主机上,因此./certs在运行容器的主机上不存在,所以......

如果您想绑定卷,您需要运行:

mkdir -p ./certs

在运行容器的机器上,它将工作。

它可以在您的计算机上运行,​​因为该目录存在于本地。

将目录复制到主机

scp -r /local/directory/ username@to_host:/remote/directory/
Run Code Online (Sandbox Code Playgroud)