如何在詹金斯中将Redis容器用于另一个容器?

时间:2019-08-01 12:02:08

标签: java docker jenkins redis

我正在尝试在詹金斯中启动两个容器。第一个用于应用程序的容器,第二个用于redis。带有应用程序的容器必须可以访问带有Redis的容器。如何通过jenkinsfile运行容器,以便容器交互?

我的dockerfile:

FROM openjdk:8

RUN apt-get update
RUN apt-get install -y maven

WORKDIR /signing_bot

ADD pom.xml /signing_bot/pom.xml
ADD src /signing_bot/src

EXPOSE 6379/tcp

我的jeckinsfile:

node {
    def signingBot
    def redisContainer

    stage('Clone repository') {
        checkout scm
    }
    stage('Prepare') {
        redisContainer = docker.image('redis:3.0.7-alpine')
        signingBot = docker.build("signing-bot")
    }

    stage('build') {
        redisContainer.withRun { c ->
            stage 'client set'
            signingBot.withRun {
                d ->
                    signingBot.inside {
                        sh 'mvn test'
                    }
            }
        }
    }

    stage('package') {

        app.inside {
            sh 'mvn package'
            archiveArtifacts(artifacts: '**/target/*.jar', fingerprint: true)
        }
    }
}

def hostIp(container) {
    sh "docker inspect -f {{.NetworkSettings.IPAddress}} ${container.id} > host.ip"
    readFile('host.ip').trim()
}

由于操作:

  

sh“ redis-cli -h $ {ip}设置测试123”

我在下面看到了这个

  
      
  • redis-cli -h 172.17.0.5设置测试123
  •   
     

我也尝试:

stage('build') {
        redisContainer.withRun() { c ->
            sh "docker logs ${c.id}"
            signingBot.inside("--link ${c.id}:redis") {
                stage('test') {
                    sh 'mvn test'
                }
            }
        }
    }

但是带有应用程序的容器看不到Redis并给出错误

  

org.springframework.data.redis.RedisConnectionFailureException:无法   与Jedis建立联系;嵌套异常为   redis.clients.jedis.exceptions.JedisConnectionException:   java.net.ConnectException:连接被拒绝(连接被拒绝)

如何配置容器之间的交互?

0 个答案:

没有答案