編輯:對不起,我誤解了這個問題的第一部分。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