经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Linux/Shell » 查看文章
自动化集成:Pipeline整合Docker容器
来源:cnblogs  作者:知了一笑  时间:2022/1/2 13:48:50  对本文有异议

前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译、打包、镜像构建、部署等操作;本篇文章主要描述流水线集成Docker用法

一、背景描述

微服务架构是当前主流的技术选型,在业务具体落地时,会存在很多业务服务,不管是在开发、测试、上线的任意节点中,如果基于手动编译的方式打包服务,操作成本不仅极高,而且很容易出现纰漏。

通过Pipeline流水线的方式,将服务镜像构建编排成一键触发执行,实现自动化的管理流程,是微服务架构中的必要的功能模块。

二、流程设计

本篇中的流程节点,主要针对打包好的应用Jar包,在docker模块中的处理流程,主要是镜像构建管理与容器运行:

  • 构建docker文件目录与内容;
  • 拷贝Jar包,创建Dockerfile脚本文件;
  • 执行docker镜像构建,推送云仓库;
  • 拉取镜像文件并运行docker容器;

整个流程的都放在Pipeline流水线中,衔接在本地Jar包生成之后。

三、实现过程

1、插件安装

首先安装流程中Docker集成的相关插件:Docker PipelineDocker pluginCloudBees Docker Hub/Registry Notification

在之前的流水线篇幅中,已经通过流水线完成Gitee仓库代码pull和本地打包,下面开始处理docker环节。

2、镜像构建脚本

关于Dockerfile的脚本语法也可以参考之前docker篇幅,下面看流水线中的用法:

  1. environment {
  2. docker_directory = 'docker-app'
  3. docker_repository = '仓库URL'
  4. }
  5. stage('Dockerfile') {
  6. steps {
  7. sh '''
  8. rm -rf ${docker_directory}
  9. mkdir -p ${docker_directory}
  10. cp auto-client/target/auto-client-1.0-SNAPSHOT.jar ${docker_directory}/auto-client.jar
  11. cd ${docker_directory}
  12. cat>Dockerfile<<EOF
  13. FROM java:8
  14. MAINTAINER cicadasmile
  15. VOLUME /data/docker/logs
  16. ADD auto-client.jar application.jar
  17. ENTRYPOINT ["java","-Dspring.profiles.active=dev","-Djava.security.egd=file:/dev/./urandom","-jar","/application.jar"]
  18. EOF
  19. cat Dockerfile
  20. '''
  21. echo "create Dockerfile success"
  22. }
  23. }

脚本说明:

  • 在流水线的工作空间创建目录docker-app
  • 每次执行都清空一次docker目录,再把Jar包和Docker脚本放进去;
  • cat-EOF-EOF:即创建Dockerfile文件,并把中间的内容写入;
  • 脚本中的内容必须在文件中顶行写入;

3、打包推送

这里即进入docker目录,执行镜像打包的操作,并把镜像推送到云端仓库,很多仓库都是私有的,需要身份验证,通过配置凭据去访问:

  1. stage('DockerImage'){
  2. steps {
  3. script {
  4. dir("${docker_directory}") {
  5. sh 'ls'
  6. docker.withRegistry("${docker_directory}", '访问凭据') {
  7. docker.build("doc-line-app:latest").push()
  8. }
  9. }
  10. echo "build DockerImage success"
  11. }
  12. }
  13. }

4、凭据配置

打开Manage Jenkins界面,Manage Credentials选项;

按如下流程配置即可:


同系列推荐


四、源代码地址

  1. GitEE·地址
  2. https://gitee.com/cicadasmile/butte-auto-parent
  3. Wiki·地址
  4. https://gitee.com/cicadasmile/butte-java-note

原文链接:http://www.cnblogs.com/cicada-smile/p/15757248.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号