我在 Jenkinsfile 测试阶段连接 mongoDB 时遇到问题。基础镜像是来自 dockerhub 的 mongo -image。
我的单元测试首先尝试通过以下方式连接到 mongoDB:
mongoose.connect(mongodb://localhost:27017/datastore_test, options);
但失败:
MongoNetworkError:第一次连接时无法连接到服务器 [localhost:27017] [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
我也试过'mongodb://mongo:27017/datastore_test'但没有成功。
在 CI 管道期间使用 docker 连接数据库是否有一些技巧或注意事项?
这是我的 Jenkinsfile 的样子:
pipeline {
agent {
docker {
image 'myusername/mongonode:latest'
args '-p 3000:3000'
}
}
environment {
CI = 'true'
}
stages {
stage('Build') {
steps {
sh 'npm install'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
stage('Deliver') {
steps {
sh './jenkins/scripts/deliver.sh'
input message: 'Finished using the web site? (Click "Proceed" to continue)'
sh './jenkins/scripts/kill.sh'
}
}
}
}
编辑:输出docker inspect 8ad397858ecd | grep IP
docker inspect 8ad397858ecd | grep IP
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"IPAMConfig": null,
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,