【发布时间】:2022-01-16 00:34:08
【问题描述】:
我们有一个 Jenkins 管道,它在 docker 容器上运行并在 tomcat 中部署应用程序,但是一旦管道构建完成,docker 容器就会被销毁,因此我们无法访问已安装的应用程序-
有没有办法在构建完成后保留通过 Jenkins 管道启动的 docker 容器。
管道示例代码:
pipeline {
agent {
docker {
label '<label-name>'
image '<image-name>'
args '--cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH -v $HOME/mavenrepo/module/repository:/usr/share/.m2/repository --user root --memory=9g'
}
}
stages {
//Few required stages here
stage('Start Application server'){
steps{
script{
FAILED_STAGE = env.STAGE_NAME
//startApplicationServer()
//checkServerStarted()
}
}
}
}
}
在管道构建结束时,可以看到容器销毁代码 -
$ docker stop --time=1 b8445c83d7c9d08231c27f4f03f486d021fa1c0fa1d89c189231b069a2fbbf
$ docker rm -f b8445c83d7c9d08231c27f4f03f486d021fa1c0fa1d89c189231b069a2fbbf
[Pipeline] // withDockerContainer
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
【问题讨论】:
-
您需要在管道期间将生成的工件从构建发布到存储库。
标签: docker jenkins jenkins-pipeline jenkins-groovy