前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java 应用使用 Docker 的入门指南:建立一个 CI/CD 流水线

Java 应用使用 Docker 的入门指南:建立一个 CI/CD 流水线

作者头像
LinuxSuRen
发布2019-04-19 15:56:15
1.2K0
发布2019-04-19 15:56:15
举报
文章被收录于专栏:JenkinsJenkins

Docker 已经非常出名并且更多的组织正在转向基于 Docker 的应用开发和部署。这里有一个关于如何容器化现有 Java Web 应用以及使用 Jenkins 为它建立一个端到端部署流水线的快速指南。

为此我使用了非常著名的基于 Spring 的宠物商店应用,它代表了一个很好的示例,因为大多数应用都遵循类似的体系结构。

步骤

  1. 构建宠物商店应用。
  2. 运行一次 Sonar 质量检查。
  3. 使用该 Web 应用准备 Docker 镜像。
  4. 运行容器以及执行集成测试。
  5. 如果所有测试成功,推送该镜像到一个 dockerhub 账户。

所有的代码都在这里。

这里是可用于以上步骤的 Jenkins 流水线代码:

代码语言:javascript
复制
node {
    stage 'checkout'
    git 'https://gitlab.com/RavisankarCts/hello-world.git'
    stage 'build'
    sh 'mvn clean install'
    stage('Results - 1') {
         junit '**/target/surefire-reports/TEST-*.xml'
         archive 'target/*.jar'
        }
    stage 'bake image'
    docker.withRegistry('https://registry.hub.docker.com','docker-hub-credentials') {
        def image = docker.build("ravisankar/ravisankardevops:${env.BUILD_TAG}",'.')
        stage 'test image'
        image.withRun('-p 8888:8888') {springboot ->
        sh 'while ! httping -qc1 http://localhost:8888/info; do sleep 1; done'
        git 'https://github.com/RavisankarCts/petclinicacceptance.git'
        sh 'mvn clean verify'
        }
        stage('Results') {
         junit '**/target/surefire-reports/TEST-*.xml'
         archive 'target/*.jar'
        }
        stage 'push image'
        image.push()
    }
}

最初的步骤只是检出代码并运行构建。有趣的部分从这个步骤开始,它使用 dockerhub 凭证在 Docker 上下文中运行。

代码语言:javascript
复制
step 3 'bake image'
docker.withRegistry('https://registry.hub.docker.com','docker-hub-credentials')

这个步骤构建 Docker 镜像。Docker build 命令将 dockerhub 仓库名称和 tag 名称作为一个参数,而构建位置作为另一个参数。

代码语言:javascript
复制
def image = docker.build("dockerhub registry name":"tag name",'location of docker file')
def image = docker.build("ravisankar/ravisankardevops:${env.BUILD_TAG}",'.')

这里使用 Dockerfile 来构建 Docker 镜像。 Dockerfile 的内容如下:

代码语言:javascript
复制
FROM tomcat:8
ADD target/*.war /usr/local/tomcat/webapps

下一步是运行镜像并执行测试:

代码语言:javascript
复制
stage 'test image'
        image.withRun('-p 8888:8888') { springboot ->
        sh 'while ! httping -qc1 http://localhost:8888/info; do sleep 1; done'
        git 'https://github.com/RavisankarCts/petclinicacceptance.git'
        sh 'mvn clean verify'
}

withRun 步骤用来帮你运行你刚才构建的 Docker 镜像并暴露应用可以暴露的端口。我有另一个测试代码库,它被构建和执行,将对正在运行的镜像运行测试。

最后一步是推送该镜像到一个 dockerhub registry 或者你的组织建立的任何内部 registry 。

代码语言:javascript
复制
stage('Results') {
         junit '**/target/surefire-reports/TEST-*.xml'
         archive 'target/*.jar'
        }
        stage 'push image'
        image.push()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Jenkins 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档