在jenkins管道中获取容器ID时出错

时间:2017-01-11 06:33:24

标签: jenkins docker jenkins-pipeline jenkinsfile

我有一个管道脚本,我试图将几个容器链接在一起(自由容器,oracle容器和maven jdk容器)。

首先我创建oracle容器:

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")

但是当我尝试将它链接到maven时:

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

我在jenkins中收到以下错误:

  

失败:java.io.IOException:无法运行image' maven:3.3.9-jdk-8'。   错误:docker:来自守护程序的错误响应:无法获取容器   $ {} db.id。请参阅' / usr / bin / docker-current run --help'。

这是否与使用inside来电而不是run的事实有关?

2 个答案:

答案 0 :(得分:3)

您的变量${db.id}未在管道DSL脚本中替换(或者说话:interpolated),因为您使用的是引号

将命令调整为使用双引号

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

我认为您不希望$M2_REPO进行插值,因此通过预先设置\转义

答案 1 :(得分:0)

我不知道它是什么语言但是docker build会查找文件" Dockerfile"在当前目录中。所以 tag docker/oracle 有一些问题,因为它已经使用 header h1 { color: white; text-align:center; -webkit-text-fill-color: transparent; -webkit-text-stroke: 3px white; /.*text-shadow: 0px 0px 0.1em aqua, 0px 0px 0.25em lime;*/ font-size: 7em; } header h1:hover { -webkit-text-fill-color: white; } 构建了图像 你只需要运行这个图像而不是构建。