编辑:对不起,我误解了这个问题的第一部分。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
我运行测试生活的命令你的答案有点困惑,你是不是说你显示的文件不是jenkins中运行的文件?此外,您可以设置'$ COMPOSE_PROJECT_NAME',并取消'-p $ COMPOSE_ID'。看到https://docs.docker.com/compose/reference/envvars/ – BMitch
是的我猜这就是发生了什么,可能是没有跟踪我尽可能勤奋地使用的错误和配置。我可以编辑第一部分,因为它不重要,因为它可能有用而留下第二部分。设置项目名称+1,没有注意到。 – Justin