2017-01-11 6 views
2

여러 컨테이너 (리버티 컨테이너, 오라클 컨테이너 및 메이븐 jdk 컨테이너)를 함께 연결하려고하는 파이프 라인 스크립트가 있습니다.젠킨스 파이프 라인에서 컨테이너 ID를 가져 오는 중 오류가 발생했습니다.

db = docker.build('oracle', 'docker/oracle').run("-p 49160:22 -p 49161:1521") 

그런 다음 내 자유 컨테이너에 연결 확인 작동하는 것 같다 :

먼저 내가 오라클 컨테이너 생성

wlp = docker.build('liberty', 'docker/liberty').run("-p 9080:9080 --link=${db.id}:oracle") 

을하지만 받는다는 하나에 연결하려고 할 때 :

mvn.inside('-v $M2_REPO:/m2repo --link=${db.id}:oracle ') { 

나는 젠킨스에 다음과 같은 오류가 발생합니다 :

Failure: java.io.IOException: Failed to run image 'maven:3.3.9-jdk-8'. Error: docker: Error response from daemon: Could not get container for ${db.id}. See '/usr/bin/docker-current run --help'.

run이 아닌 inside 전화를 사용하고 있다는 사실과 관련이 있습니까?

답변

3

귀하의 변수 ${db.id} (또는 그루비 말하는 : interpolated) 대체되지 않습니다 당신이 단일 따옴표를 사용하는 넣어 때문에 파이프 라인 DSL 스크립트 내부.

대신 사용 따옴표에 조정 명령 :

mvn.inside("-v \$M2_REPO:/m2repo --link=${db.id}:oracle") { 

난 당신이 $M2_REPO 보간하고 싶지 않아요 가정, 따라서 그것은 \를 앞에 붙이는을 탈출이다.

0

나는 그것이 어떤 언어인지 모르지만 도커 빌드는 현재 디렉토리의 "Dockerfile"파일을 찾습니다. 그래서 docker.build('oracle', 'docker/oracle') 은 이미 이미지를 빌드하기 때문에 tag docker/oracle 으로 만들면 빌드하지 않고이 이미지를 실행하면됩니다.