将 docker 图像推送到 Jenkinsfile 中的注册表时出错
Error when pushing docker image to registry in Jenkinsfile
我正在使用 Jenkinsfile 尝试将 docker 图像推送到我在 Jenkins 构建管道插件中的本地 docker 注册表。我通过阅读文档了解到您应该能够推送带有可选标记名的图像:
Image.push([tagname])
我目前有以下代码
stage('Initialise environment') {
checkout scm
db = docker.build('oracle', 'docker/oracle').run("-p 49160:22 -p 49161:1521")
wlp = docker.build('liberty', 'docker/liberty').run("-p 9080:9080 --link=${db.id}:oracle")
}
stage('Push image to registry') {
docker.withRegistry('https://localhost:5000') {
db.push()
wlp.push()
}
}
它在第一个 push() 时失败并出现以下错误:
Failure: groovy.lang.MissingMethodException: No signature of method:
static org.jenkinsci.plugins.docker.workflow.Docker.push() is
applicable for argument types: () values: [] Possible solutions:
use([Ljava.lang.Object;), use(java.util.List, groovy.lang.Closure),
use(java.lang.Class, groovy.lang.Closure), dump(),
is(java.lang.Object), each(groovy.lang.Closure)
有什么想法吗?
好的,我进行了以下更改,似乎已解决该问题:
dbImage = docker.build('oracle', 'docker/oracle')
db = dbImage.run("-p 49160:22 -p 49161:1521")
wlpImage = docker.build('liberty', 'docker/liberty')
wlp = wlpImage.run("-p 9080:9080 --link=${db.id}:oracle")
}
stage('Push image to registry') {
docker.withRegistry('https://localhost:5000') {
dbImage.push()
wlpImage.push()
}
}
再次阅读文档我现在可以看到 运行() returns 运行ning 容器的句柄,而 push() 只能在返回的图像对象上调用从构建()
我正在使用 Jenkinsfile 尝试将 docker 图像推送到我在 Jenkins 构建管道插件中的本地 docker 注册表。我通过阅读文档了解到您应该能够推送带有可选标记名的图像:
Image.push([tagname])
我目前有以下代码
stage('Initialise environment') {
checkout scm
db = docker.build('oracle', 'docker/oracle').run("-p 49160:22 -p 49161:1521")
wlp = docker.build('liberty', 'docker/liberty').run("-p 9080:9080 --link=${db.id}:oracle")
}
stage('Push image to registry') {
docker.withRegistry('https://localhost:5000') {
db.push()
wlp.push()
}
}
它在第一个 push() 时失败并出现以下错误:
Failure: groovy.lang.MissingMethodException: No signature of method: static org.jenkinsci.plugins.docker.workflow.Docker.push() is applicable for argument types: () values: [] Possible solutions: use([Ljava.lang.Object;), use(java.util.List, groovy.lang.Closure), use(java.lang.Class, groovy.lang.Closure), dump(), is(java.lang.Object), each(groovy.lang.Closure)
有什么想法吗?
好的,我进行了以下更改,似乎已解决该问题:
dbImage = docker.build('oracle', 'docker/oracle')
db = dbImage.run("-p 49160:22 -p 49161:1521")
wlpImage = docker.build('liberty', 'docker/liberty')
wlp = wlpImage.run("-p 9080:9080 --link=${db.id}:oracle")
}
stage('Push image to registry') {
docker.withRegistry('https://localhost:5000') {
dbImage.push()
wlpImage.push()
}
}
再次阅读文档我现在可以看到 运行() returns 运行ning 容器的句柄,而 push() 只能在返回的图像对象上调用从构建()