如何在Docker容器内运行的jenkins中的env.BUILD_URL正确获取外部网络端口号?

时间:2016-10-27 12:51:46

标签: jenkins docker port jenkins-pipeline

从jenkins的官方码头图片中尝试jenkins

docker run -d -p 8090:8080 jenkins

请注意,我已选择主持人的8090端口映射到docker容器的8080端口。

现在,在jenkins内部,我正在运行一个样本管道,我只有一行

echo "${env.BUILD_URL}"

作为此管道脚本的结果,管道控制台输出显示以下

http://localhost:8090/job/sample_pipeline/1/

注意端口号8090

我的问题是,

容器内的jenkins如何知道我已将8090设置为应映射到jenkins容器的8080端口的主机端口?

我的意思是,从docker容器内部调用env.BUILD_URL,jenkins是不是应该查看自己的主机并返回端口8080作为运行它的端口号?

Jenkins不应该知道它是作为容器运行的,它需要在容器范围之外查看它以确定它映射到的外部端口号是什么?

1 个答案:

答案 0 :(得分:0)

由于您使用http://localhost:8090访问控制台并触发构建,我猜它会从那里获取它。