使用Jenkinsfile运行容器

时间:2018-02-20 11:14:09

标签: docker jenkins containers dockerfile jenkins-pipeline

我在编写Jenkinsfile时遇到问题。 我的环境:

  • 运行docker的服务器
  • Jenkins作为服务器上的容器运行

我在DockerHub上有一个Docker镜像,我在获取该图像方面没有问题。

我的Jenkinsfile目前看起来像这样:

pipeline {
  agent {
    docker {
      image 'emil2709/servopsdockerfile'
      args '-d -p 80:80 /usr/sbin/apache2ctl -D FOREGROUND'
    }
  }

  stages {
    stage ('Testing') {
      steps {
        sh 'echo testing'
      }
    }
    stage ('Deploying') {
      steps {
        sh 'echo deploying'
      }
    }
  }
}

容器不会运行。
我想:

  • 制作测试容器
  • 如果我的所有测试都没问题,我想部署一个新的容器,就是网络服务器。

我的问题是让Docker容器运行,我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以在docker镜像上运行测试,该镜像具有构建和测试源代码所需的工具。然后,在构建项目之后,您可以创建一个新的docker镜像。

假设你有一个使用maven的java项目。在此方案中,测试并构建源代码。然后,在下一阶段,只需创建您的泊坞窗图像。

IMAGE_ID:包含必要工具的泊坞窗图片,在示例中为maven。

您需要一个Dockerfile来发出命令docker build

pipeline {

  stages {
    stage ('Building') {
      steps {
        sh '''
        docker run -i --rm -v ./:/src -w /src IMAGE_ID  /bin/bash -c "mvn test package" 
        '''
      }
    }
    stage ('dockerization') {
      steps {
        sh '''
        docker build -t your_tag .
        docker push ...
        '''
      }
    }
  }
}

最小的Dockerfil示例:

FROM openjdk:8-jdk
COPY target/*.jar /app/application.jar
EXPOSE 8080
ENTRYPOINT java -jar /app/application.jar