使用Docker堆栈进行批量安装

时间:2018-10-19 02:51:03

标签: docker docker-compose docker-swarm docker-stack

以下是我的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管道中不起作用。我得到的错误是

  

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

我了解到,如果您将主机路径绑定安装到服务的容器中,则该路径必须存在于每个群集节点上。因此,我认为我需要创建一个命名卷。但是,对于命名卷,我无法指定证书的源路径。令人困惑。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

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

如果要绑定该卷,则需要运行:

mkdir -p ./certs

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

它可在您的计算机上使用,因为该目录位于本地。

答案 1 :(得分:1)

@Niraj我也遇到了这个问题,并且发现每个节点都需要文件来运行。在您的情况下,我会这样做:

  1. 在您的 Dockerfile 中创建certs文件夹
    • RUN mkdir /certs
  2. 更改撰写文件以使用绝对路径
    • - $PWD/certs:/certs
  3. 将证书复制到容器中
    • docker cp <file_name> <container_id>:/certs

希望这会有所帮助!