You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Jenkins流水线中通过Docker插件获取MongoDB容器IP的方法

问题:Jenkins流水线中获取MongoDB容器IP地址

我在Jenkins流水线中使用Docker插件启动用于测试的后台MongoDB容器,代码如下:

stage('Start') {
  steps {
    script {
      container = docker.image('mongo:latest').run('-p 27017:27017 --name mongodb -d')
    }
  }
}

我需要获取该容器的IP地址以进行连接。我在网上找到一些提及docker.inspect和docker.getIpAddress方法的示例,但调用时均报错,查看Docker插件源码后发现这些方法并不存在。请问是否可以从container对象中获取IP地址?


解决方案

目前新版Jenkins Docker插件的container对象并没有直接提供获取IP的方法,那些旧示例里的方法已经被移除,你可以通过以下两种方式获取容器IP:

方法1:通过容器ID执行docker inspect命令提取IP

利用container.id获取容器唯一标识,再通过Shell命令解析docker inspect的输出结果得到IP地址:

stage('Start & Get MongoDB IP') {
  steps {
    script {
      container = docker.image('mongo:latest').run('-p 27017:27017 --name mongodb -d')
      // 执行docker inspect提取容器IP并去除多余换行空格
      def containerIp = sh(
        script: "docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ${container.id}",
        returnStdout: true
      ).trim()
      echo "MongoDB容器IP地址:${containerIp}"
      // 后续测试环节可直接使用containerIp连接数据库
    }
  }
}

方法2:直接使用宿主映射端口连接

由于你已经将容器的27017端口映射到了Jenkins节点的27017端口,若测试代码运行在Jenkins节点上,也可以直接使用节点的IP(或localhost,如果流水线在本机执行)加上27017端口来连接MongoDB,无需获取容器内部IP。


内容的提问来源于stack exchange,提问作者vgru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 09:20:01