0

编辑:对不起,我误解了这个问题的第一部分。Docker组合和并发集成测试

所以我有一个docker-compose.yaml时同步跑了工作的罚款:

server: 
    build: . 
    dockerfile: "./docker/integration_tests/server/Dockerfile" 
    links: 
    - mongo 
    environment: 
    - "MONGO_URI=mongodb://mongo:27017/company" 

mongo: 
    image: 'mongo:3.2.6' 
    ports: 
    - "27017" 

当用这个命令启动:docker-compose build && docker-compose up --abort-on-container-exit

然而,当我启动2-3个工作岗位,以测试它是否可以并行工作(这是在使用管道詹金斯,所以它们具有不同的目录)我在工作一看到这一点:

Successfully built 7b23b3a7b823 
+ docker-compose up --abort-on-container-exit 
Creating companyservercicd3_mongo_1 

ERROR: for mongo Cannot start service mongo: driver failed programming external connectivity on endpoint companyservercicd3_mongo_1 (422826f73ce76526e4072f72a2b44467f9080e79a24d37d1fe2bba903854a698): Bind for 0.0.0.0:27017 failed: port is already allocated 
Encountered errors while bringing up the project. 

这对工作B:

Successfully built 80aa795867eb 
+ docker-compose up --abort-on-container-exit 
Creating companyservercicd4_mongo_1 

ERROR: for mongo Cannot start service mongo: driver failed programming external connectivity on endpoint companyservercicd4_mongo_1 (1591f2847e6c0d81f2c530874201ea912fa59ea35bfa27e5b25d7843e06da6b5): Bind for 0.0.0.0:27017 failed: port is already allocated 
Encountered errors while bringing up the project. 

文档说这有关ports配置选项:

暴露的端口。指定两个端口(HOST:CONTAINER),或者只是指定容器端口(将选择一个随机主机端口)。

我一定是误解了一些东西,因为我认为27017将在一个容器内,并且每个作业都有自己的容器。我在这里做错了什么?

另一个多少有些相关的问题 - 因为詹金斯是创造每工作一个新的目录,所以没有名称冲突,但会有办法通过传递,将让每一个选项,以使该防弹这个效果很好詹金斯运行有它自己的名字?另一位用户推荐这样做,作为一种解决方法:

`docker-compose run --rm --no-deps --name `uuidgen` ...` 

但这需要我返工我的码头工人,compose.yml和转换up命令到相当于build/create/start/attach

回答

0

所以我想这是一场虚惊 - ports下的每个列表项都有一个编号确实修复了我遇到的端口冲突。

我定的名字不被调用docker-compose buildup像这样是足够独特的(因此不是弹性的并发):COMPOSE_ID=的uuidgen _; docker-compose -p $COMPOSE_ID build && docker-compose -p $COMPOSE_ID up --abort-on-container-exit,与实际在我docker-compose.yml

+0

我运行测试生活的命令你的答案有点困惑,你是不是说你显示的文件不是jenkins中运行的文件?此外,您可以设置'$ COMPOSE_PROJECT_NAME',并取消'-p $ COMPOSE_ID'。看到https://docs.docker.com/compose/reference/envvars/ – BMitch

+0

是的我猜这就是发生了什么,可能是没有跟踪我尽可能勤奋地使用的错误和配置。我可以编辑第一部分,因为它不重要,因为它可能有用而留下第二部分。设置项目名称+1,没有注意到。 – Justin