重新创建由其他目录创建的撰写服务

时间:2020-07-18 13:24:37

标签: docker docker-compose

我使用多个docker-compose.yaml从传感器启动multiple servicesmount data不同的时间段,以进行后续数据读取。 但是,当我在另一个目录中运行docker-compose up命令时,我发现它会影响我之前启动的服务。 目录和代码如下:

上午7时11分

#  ~/Datasets/7-11/am
version: '3.7'

services:
    sensor-db:
        image: influxdb:1.7.6
        container_name: sensordb-7-11-am
        ports:
            - "8183:8086"
        volumes:
            - $PWD/.influxdb:/var/lib/influxdb

晚上7点11分

#  ~/Datasets/7-11/pm
version: '3.7'

services:
    sensor-db:
        image: influxdb:1.7.6
        container_name: sensordb-7-11-pm
        ports:
            - "8184:8086"
        volumes:
            - $PWD/.influxdb:/var/lib/influxdb

7-13-pm

# ~/Datasets/7-13/pm

version: '3.7'

services:
    sensor-db:
        image: influxdb:1.7.6
        container_name: sensordb-7-13-pm
        ports:
            - "8188:8086"
        volumes:
            - $PWD/.influxdb:/var/lib/influxdb

当我使用docker-compose up开始前两个时间段时,它不会发送重新创建的问题,并且当我在7月13日下午运行服务以装载数据时,我发现docker-compose up输出正在重新创建sensordb-7-11-pm,然后通过docker ps命令将sensordb-7-11-pm替换为sensordb-7-13-pm服务

这不是我所期望的,the container names of the services是不同的,但是为什么它们会互相影响?

但是我不知道如何找到相关的问题。

如果您能告诉我该问题为何产生以及如何解决,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

Compose在项目中具有项目名称服务名称的概念。默认项目名称是保存docker-compose.yml文件的目录的基本名称。就您而言,即使您有三个目录和三个docker-compose.yml文件,但从Compose的角度来看,您只有两个名为ampm的“项目”。

运行“ 7-13-pm”文件时,Compose会寻找一个与项目名称pm和服务名称sensor-db相匹配的容器。它(从sensordb-7-11-pm容器中找到),因此将其替换。您已覆盖默认的container_name:没关系。

最简单的解决方法是重命名目录。代替7-11/pm7-13/pm,将它们重命名为7-11-pm7-13-pm,删除层次结构。您还可以设置COMPOSE_PROJECT_NAME环境变量或使用docker-compose -p选项设置项目名称(在每次docker-compose调用中;这不是我的喜好)。