可以使用Docker插件在Jenkins中获取docker容器IP吗?

wkftcu5l  于 2023-05-06  发布在  Jenkins
关注(0)|答案(1)|浏览(191)

我在管道中使用Jenkins Docker插件启动后台mongodb容器进行测试,使用:

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

我需要获得容器的IP地址才能连接到它。我在网上找到一些例子提到了docker.inspectdocker.getIpAddress方法,但它们只是抛出错误,根据source code for the Docker plugin,我相信它们甚至不存在。
有没有办法从container对象中获取IP地址?

wlwcrazw

wlwcrazw1#

以下是我的解决方案(请自行测试):

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

      def ipAddress = null

      while (!ipAddress) {

        ipAddress = sh(
          returnStdout: true,
          script      : "docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mongodb"
        )

        if (!ipAddress) {
          echo "Container IP address not yet available..."
          sh "sleep 2"
        }

      }

      echo "Got IP address = ${ipAddress}."
    }
  }
}

相关问题