我使用多个docker-compose.yaml
从传感器启动multiple services
到mount 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
是不同的,但是为什么它们会互相影响?
但是我不知道如何找到相关的问题。
如果您能告诉我该问题为何产生以及如何解决,我将不胜感激。
答案 0 :(得分:1)
Compose在项目中具有项目名称和服务名称的概念。默认项目名称是保存docker-compose.yml
文件的目录的基本名称。就您而言,即使您有三个目录和三个docker-compose.yml
文件,但从Compose的角度来看,您只有两个名为am
和pm
的“项目”。
运行“ 7-13-pm”文件时,Compose会寻找一个与项目名称pm
和服务名称sensor-db
相匹配的容器。它(从sensordb-7-11-pm
容器中找到),因此将其替换。您已覆盖默认的container_name:
没关系。
最简单的解决方法是重命名目录。代替7-11/pm
和7-13/pm
,将它们重命名为7-11-pm
和7-13-pm
,删除层次结构。您还可以设置COMPOSE_PROJECT_NAME
环境变量或使用docker-compose -p
选项设置项目名称(在每次docker-compose
调用中;这不是我的喜好)。