以下是我的docker-stack文件。
version: "3"
services:
my-app:
image: my-image:latest
volumes:
- ./certs:/certs
ports:
- 6401:6401
networks:
my-net:
ipv4_address: 192.168.0.4
networks:
my-net:
external: true
在我的机器上工作正常,将certs文件夹绑定到容器内的证书。但是在我在docker-stack-node映像内部署此服务的CI管道中不起作用。我得到的错误是
类型“绑定”的无效安装配置:绑定安装源路径不正确 存在。
我了解到,如果您将主机路径绑定安装到服务的容器中,则该路径必须存在于每个群集节点上。因此,我认为我需要创建一个命名卷。但是,对于命名卷,我无法指定证书的源路径。令人困惑。有人可以帮忙吗?
答案 0 :(得分:1)
要绑定到目录,目录必须在主机上存在,因此./certs
在运行容器的主机上不存在,因此...
如果要绑定该卷,则需要运行:
mkdir -p ./certs
在运行容器的机器上,它将工作。
它可在您的计算机上使用,因为该目录位于本地。
答案 1 :(得分:1)
@Niraj我也遇到了这个问题,并且发现每个节点都需要文件来运行。在您的情况下,我会这样做:
RUN mkdir /certs
- $PWD/certs:/certs
docker cp <file_name> <container_id>:/certs
希望这会有所帮助!