自动化集成:Pipeline整合Docker容器

前言:该系列文章,围绕持续集成: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篇幅,下面看流水线中的用法:

    environment {         docker_directory = 'docker-app'         docker_repository = '仓库URL'     }              stage('Dockerfile') {             steps {                 sh '''                 rm -rf ${docker_directory}                 mkdir -p ${docker_directory}                 cp auto-client/target/auto-client-1.0-SNAPSHOT.jar ${docker_directory}/auto-client.jar                 cd ${docker_directory} cat>Dockerfile<<EOF FROM java:8 MAINTAINER cicadasmile VOLUME /data/docker/logs ADD auto-client.jar application.jar ENTRYPOINT ["java","-Dspring.profiles.active=dev","-Djava.security.egd=file:/dev/./urandom","-jar","/application.jar"] EOF                 cat Dockerfile                 '''                 echo "create Dockerfile success"             }         }  

脚本说明:

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

3、打包推送

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

stage('DockerImage'){     steps {         script {             dir("${docker_directory}") {                 sh 'ls'                 docker.withRegistry("${docker_directory}", '访问凭据') {                    docker.build("doc-line-app:latest").push()                 }             }             echo "build DockerImage success"         }     } } 

4、凭据配置

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

按如下流程配置即可:


同系列推荐


四、源代码地址

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

推荐这些文章:

自动化集成:Pipeline整合Docker容器

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

一、背景描述
微服务架构是当前主流的技术选型,在业务具体落地时,会存在很多业务服务,不管是在开发、测试、上线的任意节点中,如果基于手动编译的方式打包服务,操作成本不仅极高,而且很容易出现纰漏。
通过Pipeline流水线的方式,将服务镜像构建编排成一键触发执行,实现自动化的管理流程,是微服务架构中的必要的功能模块。
二、流程设计
本篇中的流程节点,主要针对打包好的应用Jar包,在docker模块中的处理流程,主要...

Docker: docker-compose

version: "3.9"

volumes:
data:
external: false
config:
external: false
plugins:
external: false
kibana:
external: false

networks:
demo:
name: demo
external: false
ipam:
driver: default
config:
- subnet: 10.0.0.0/24

services:
elasticsear...

自动化集成:Pipeline整合Docker+K8S

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

一、背景描述
分布式服务的部署是一个复杂的流程,当容器应用存在几十甚至上百的时候,用手动的方式部署显然难度过高,借助Kubernetes容器编排引擎,可以快速的实现自动部署,扩展,升级等一系列复杂步骤。
二、流程设计
在之前的篇幅中,已经描述了流水线的方式进行源码编译Jar包,并构建成Docker镜像的过程,接下来在K8S平台上部署Docker容器,这样整个自动化的流程就基本完善了:

核心步骤:

创建yaml文件类...

Docker部署jar包运行

1、上传jar包到服务器
2、在该目录下创建Dockerfile 文件

vi Dockerfile

3、然后将下面的内容复制到Dockerfile文件中

FROM java:8
MAINTAINER han
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]

# from java:8 拉取一个jdk为1.8的docker image
# maintainer 作者是han
# demo-0.0.1-SNAPSHOT.jar 就是你上传的jar包,替换为...

Jenkins+Docker 微服务部署到docker容器中

Jenkins部署微服务到docker容器(jenkins搭建)
在jenkins中构建项目,将项目打成的jar包放到指定目录下,使用dockerfile将jar包构建成镜像,然后docker启动镜像,微服务就部署好了 

cat /server/docker/mall-admin/docker.sh #在docker服务器创建脚本

mv admin.jar ../backup/admin.jar.`date +%Y%m%d` #备份jar包
docker rm -f admin                    #删除正在运行的admin微服务
docker r...

Docker 构建 Springboot 应用

1)先打包出 jar 包并上传到服务器
2)在同目录建立 Dockerfile 文件

FROM java:8
EXPOSE 8999

VOLUME /tmp
ADD tduck-api.jar /app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]

3)构建镜像

docker build -t='镜像名称' .

4)创建容器

docker run -di --name 容器名称 -p 8080:8080 镜像名称

 
5)查看运行日志

docker logs -f ...

Docker部署jar包运行(springboot项目)

1. 上传jar到服务器的指定目录
2. 在该目录下创建Dockerfile 文件
      vi Dockerfile
 3. 然后将下面的内容复制到Dockerfile文件中

FROM java:8
VOLUME /tmp
COPY demo-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8090
ENTRYPOINT ["java","-jar","/app.jar"]

 
4. 服务器运行:

docker build -t userdemo/demo .

 
5. 服务器运行:

docker ru...

jar包打包为docker镜像

将jar包和Dockerfile文件放同一目录下。
Dockerfile:

FROM java:8
ADD web-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

打包:
docker build -t wb:0.1 .

...

文章标题:自动化集成:Pipeline整合Docker容器
文章链接:https://www.dianjilingqu.com/506.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>