在声明性管道中运行docker

时间:2020-06-11 16:25:35

标签: jenkins

我对使用声明性管道部署映像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,并且当我使用此命令时,管道始终在运行。

有人可以帮助我吗?

1 个答案:

答案 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的容器,例如SpinnakerRazee