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