我对使用声明性管道部署映像docker有疑问。
在詹金斯,我有以下脚本。
pipeline {
agent any
stages {
stage('Clean Package') {
steps {
sh 'mvn clean package -DskipTests'
}
}
stage('Build Docker') {
steps {
sh 'docker build -t servicio-eureka-server:v1 .'
}
}
}
}
图像正确构建,但是我想我需要使用Kubernetes集群来运行图像泊坞窗。
因为我尝试添加另一个阶段调用docker run,并且当我使用此命令时,管道始终在运行。
有人可以帮助我吗?
答案 0 :(得分:1)
图像正确构建,但我认为我需要使用 kbernetes集群来运行映像泊坞窗。
因为我尝试添加另一个阶段调用docker run,当我使用它时 命令管道始终在运行。
根据您的消息,并不是100%清楚您在做什么/正在尝试做什么,但是听起来好像您正在添加另一个执行docker run <args>
的阶段来启动docker容器,但管道永远不会终止因为该命令将永远持续运行?如果使用docker run -d <args>
,它将把容器作为守护程序运行,这将使您的管道终止。
话虽如此,我不建议直接在Jenkins worker节点上运行/部署产品的docker容器,尤其是当您使用Jenkins docker plugin动态供应构建代理时。您最可能要做的最好的事情就是将容器部署到一台独立的计算机上。 Jenkins可以使用各种插件将容器部署到此计算机上,甚至就像使用ssh登录到计算机并执行一些部署脚本一样简单。
对于Kubernetes,您可以做一些简单的事情,例如让Jenkins执行kubectl
命令来应用清单(仍然使用我前面提到的独立机器策略),或者有整个平台可以帮助您部署您的到Kubernetes的容器,例如Spinnaker,Razee等