我正在尝试在詹金斯中启动两个容器。第一个用于应用程序的容器,第二个用于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:连接被拒绝(连接被拒绝)
如何配置容器之间的交互?