• 持续集成与容器管理


    1.DockerMaven 插件

    微服务部署有两种方法:

    (1)手动部署:首先基于源码打包生成jar包(或war包) ,将jar包(或war)上传到虚拟机并拷贝至JDK容器

    (2)通过maven插件自动部署

    对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们需要学习如何自动部署。

    Maven插件自动部署步骤:

    (1)修改宿主主机的docker配置,让其可以访问

    vi /lib/systemd/system/docker.service

    其中 ExecStart=后添加配置 

    -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

    (2)刷新配置,重启服务

    systemctl daemon-reload
    systemctl restart docker
    docker start registry

    (3)在工程pom.xml增加配置

    <build>
    <finalName>app</finalName>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    <!--docker的maven插件,官网:https://giithub.com/spotify/docker-maven-plugin-->
    <plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
    <imageName>192.168.222.128:5000/${project.artifactId}:${project.version}}</imageName>
    <baseImage>jdk1.8</baseImage>
    <entryPoint>["java","-jar","/${project.build.finalName}.jar"]}</entryPoint>
    <resources>
    <resource>
    <targetPath>/</targetPath>
    <directory>${project.build.directory}}</directory>
    <include>${project.build.finalName}.jar}</include>
    </resource>
    </resources>
    <dockerHost>http://192.168.222.128</dockerHost>
    </configuration>
    </plugin>
    </plugins>
    </build>

    以上配置会自动生成Dockerfile

    FROM jdk1.8
    ADD app.jar /
    ENTRYPOINT ["java","-jar","/app.jar"]

    (5)在命令提示符,进入工程所在目录,输入以下命令,进行打包和上传镜像

    mvn clean package docker:build -DpushImage

    浏览器访问192.168.222.128:5000/v2/_catalog,输出中含有上传的文件则说明上传成功

    (6)进入宿主机,查看镜像

    dockers images

    (7)启动容器

    docker run -di --name=base -p 9001:9001 192.168.222.128:5000/文件_bash:1.0-SUAPSHOT

     2.持续集成工具-Jenkins

    2.1 什么是持续集成

    持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    持续集成的特点:

    它是一个自动化的周期性的集成测试过程,从检出代码,编译构建,运行测试,结果记录,测试统计等都是自动完成,无需人工干扰;

    需要有代码托管工具支持(git)以及可视化界面Gogs的使用。

    持续集成的作用:

    保证每个开发人员的提交代码质量,减轻软件发布时的压力。

    2.2 Jenkins简介

    Jenkins只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有 
    Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被收购,成为商业版。后来创始人又写了一个jenkins,jenkins在功能上远远超过hudson

    Jenkins官网:https://jenkins.io/

    Jenkins下载:http://updates.jenkins-ci.org/

     jenkins的全部镜像:http://mirrors.jenkins-ci.org/status.html

    2.3 Jenkins安装

    2.3.1 JDK安装

    (1)将jdk-8u117-linux-x64.rpm上传到服务器(虚拟机)

    (2)执行安装命令

    rpm -ivh jdk-8u117-linux-x64.rpm

    RPM方式安装JDK ,其根目录为 :/usr/java/jdk1.8.0_117t

    2.3.2 Jenkins安装与启动

    (1)下载Jenkins

    wget https://pkg.jenkins.io/redhat/jenkins-2.83-1.1.noarch.rpm

    (2)安装jenkins

    rpm -ivh jenkins-2.83-1.1.noarch.rpm

    (3)配置Jenkins

    vi /etc/sysconfig/jenkins

    修改用户和端口

    JENKINS_USER="root"
    JENKINS_PORT="8888"

    (4)启动服务

    systemctl start jenkins

    (5)访问链接 http://192.168.222.128:8888

    从 /var/lib/jenkins/secrets/initialAdminPassword 中获取初始密码符

    2.4Jenkins插件安装

    点击左侧的“系统管理”菜单 ,然后点击

    2.5全局工具配置

    (1)jdk 配置

    设置jdkhome为 /usr/java/jdk1.8.0_117-amd64

    (2)Git配置(本地已经安装了Git软件)

    (3)maven配置

    maven_home  /usr/local/maven

    2.6 代码上传到Git服务器

    2.6.1 Gogs代建与配置

    Gogs是一款极易搭建的自助Git服务

    地址: https://gitee.com/Unknown/gogs

    (1)下载镜像

    docker pull gogs/gogs

    (2)创建容器

    docker run -di --name=gogs -p 10022:22 -p 3000:3000 -v /var/gogsdata:/data gogs/gogs

    (3)浏览器输入地址 192.168.222.128:3000 访问界面

    填写一些必要信息 如host主机 url 用户 设置管理员账号设置之后就可以进入控制台页面

    点击+ 添加仓库

     2.6.2 提交代码

    步骤:

    (1)在本地安装git(windows版本)

    (2)在IDEA 中选择菜单 :file -----settings,在窗口选择Version Control ---Git

    新版IDEA  :

    (1)

    双击文件 --选择git----repository-----remotes  点击+   URL是 复制我们上一步我们已经创建好的git库地址 ---OK     

    (2) 

    双击文件 --选择git----Add

    (3)

    双击文件 --选择git----commit Directory ---OK

    (4)

    双击文件 --选择git----repository---push---push

    (5)登录git用户名和密码

    2.7 任务的创建与集成

    打开Jenkins 界面

    创建任务

    命令:

    clean package docker:build -DpushImage

    最后点击保存

    执行任务

  • 相关阅读:
    calcite 概念和架构
    在vscode中快速生成vue模板
    curl发送post请求
    【vue】chrome已安装Vue Devtools在控制台却无显示
    java(第一天)
    小游戏之莫交叉
    再谈成麻结账程序2.0
    成麻结账程序
    倍福Twincat2 常用快捷键及部分注意事项
    IP地址,子网掩码、默认网关,DNS服务器之间的联系与区别
  • 原文地址:https://www.cnblogs.com/yangzhixue/p/11969953.html
Copyright © 2020-2023  润新知