如何在 docker compose 中为每个容器创建单独的卷

How to create separate volumes for each container in docker compose

我创建了一个 docker 图像,我想为其 运行 多个容器。这个 docker 图像依赖于一些对所有容器都保持相同的东西,但唯一的区别是容器的配置。

version: '2.4'

services:
    s1:
        image: testdockerimg:latest
        volumes:
            - /home/andrew/Documents/CVAI/configs/s1config.json:/home/andrew/Documents/CVAI/configs/config.json
            - /home/andrew/Documents/CVAI:/home/andrew/Documents/CVAI/
        restart: always
        mem_limit: 2g

    s2:
        image: testdockerimg:latest
        volumes:
            - /home/andrew/Documents/CVAI/configs/s2config.json:/home/andrew/Documents/CVAI/configs/config.json
            - /home/andrew/Documents/CVAI:/home/andrew/Documents/CVAI/
        restart: always
        mem_limit: 2g

在上面的文件中,您可以看到我为 s1 s2 容器提供了 s1configs2config,但其余部分保持不变,这是为什么 /home/andrew/Documents/CVAI 两个容器的体积相同。因此,docker 在两个容器之间共享容量,因此所有数据都在容器之间混合而不是分开。

有什么方法可以将多个容器之间的卷分开。? 我不想为此创建多个 docker。请帮忙。谢谢

编辑

已更新 docker-撰写文件:

version: '2.4'

services:
    s1:
        image: testdockerimg:latest
        volumes:
            - /home/andrew/Documents/s1/configs/s1config.json:/home/andrew/Documents/CVAI/configs/config.json
            - /home/andrew/Documents/s1:/home/andrew/Documents/CVAI/
        restart: always
        mem_limit: 2g

    s2:
        image: testdockerimg:latest
        volumes:
            - /home/andrew/Documents/s2/configs/s2config.json:/home/andrew/Documents/CVAI/configs/config.json
            - /home/andrew/Documents/s2:/home/andrew/Documents/CVAI/
        restart: always
        mem_limit: 2g

在主机上,每个容器都应该有自己的卷。它们可以以相同的路径安装在容器中。每个容器都可以使用相同的图像,并且会在主机上以相同的名称看到它的专用卷。