ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

持续集成(CI)和容器管理学习笔记

2021-11-02 00:00:14  阅读:223  来源: 互联网

标签:集成 容器 CI jar 笔记 INFO 192.168 docker 2.11


文章目录

1. DockerMaven插件

微服务部署方式:

  1. 手动部署:基于源码打包生成jar,上传到服务器。
  2. 通过Maven插件自动部署。

1.1 Maven插件自动部署步骤:

  1. 修改宿主机docker配置,让其可以远程访问。在docker.service文件的ExecStart=后添加-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
vi /lib/systemd/system/docker.service	

在这里插入图片描述

  1. 刷新配置,重启服务
systemctl daemon-reload
sudo systemctl restart docker
docker start registry
  1. pox.xml 文件中添加以下内容
<build>
    <finalName>dockerDemo</finalName>
    <plugins>
        <!-- springboot maven插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- docker 插件 -->
        <plugin>
            <!-- 版本信息 -->
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <!-- 配置信息 -->
            <configuration>
                <!-- docker 生成的镜像名称 -->
                <imageName>192.168.2.11:5000/${project.artifactId}:${project.version}</imageName>
                <!-- 基础镜像 == Dockerfile中的 FROM jdk1.8 -->
                <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.2.11:2375</dockerHost>
            </configuration>
        </plugin>
    </plugins>
</build>

以上配置会自动生成 Dockerfile 文件

FROM jdk1.8
ADD dockerDemo.jar /
ENTRIPOINT ["java","-jar","/dockerDemo.jar"]
  1. 在cmd下,进入项目工程,进行打包和上传镜像。
mvn clean package docker:build -DpushImage

示例:

[INFO] Building image 192.168.2.11:5000/springboot-demo:0.0.1-SNAPSHOT
Step 1/3 : FROM jdk1.8

 ---> 79f8c221d4f6
Step 2/3 : ADD /dockerDemo.jar //

 ---> d0a85948e94f
Step 3/3 : ENTRYPOINT ["java","-jar","/dockerDemo.jar"]

 ---> Running in ded9a19061e8
Removing intermediate container ded9a19061e8
 ---> 61d57ebbc410
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 61d57ebbc410
Successfully tagged 192.168.2.11:5000/springboot-demo:0.0.1-SNAPSHOT
[INFO] Built 192.168.2.11:5000/springboot-demo:0.0.1-SNAPSHOT
[INFO] Pushing 192.168.2.11:5000/springboot-demo:0.0.1-SNAPSHOT
The push refers to repository [192.168.2.11:5000/springboot-demo]
9f8f970adb5a: Pushed
5739a69f0bb7: Mounted from jdk1.8
f967d613a659: Mounted from jdk1.8
174f56854903: Mounted from jdk1.8
0.0.1-SNAPSHOT: digest: sha256:39f341edef265ddfbfab7227c63ffa12e41862e5601198f7a530cbc29061ab79 size: 1161
null: null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  37.979 s
[INFO] Finished at: 2021-11-01T23:16:33+08:00
[INFO] --------------------------------------------------------
  1. 进入宿主机centos查看镜像:docker images
  2. 启动容器:
docker run -di --name=dockerDemo -p 88:8080 192.168.2.11:5000/springboot-demo:0.0.1-SNAPSHOT
  1. 访问:http://192.168.2.11:88/hello

注:这里编写了一个SpringBoot的程序。

@RestController
public class HiController {
    @RequestMapping("/hello")
    public String k8s(){
        return "<h1>HELLO</h1> <h1>HUATHY</h1>";
    }
}

2. 持续集成与Jenkins

2.1 什么是持续集成

  1. 持续集成Continuous integration,简称CI
  2. 如何更好的协同工作,确保软件开发质量。敏捷开发,如何在不断变化的需求中保证质量。
  3. 持续集成是针对此类问题的一种开发实践。倡导团队经常集成。每次集成都通过自动化构建来验证,包括自动编译、发布、测试,从而尽快的发现集成的错误,使团队更快的开发内聚的软件。
  4. 持续集成的特点:
    • 是一个自动化的周期性集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成,无需人工干预。
    • 需要有专门的集成服务器来执行集成构建。
    • 需要有代码托管工具支持,eg:GitHub、Gitee、GitLab、Gogs。
  5. 持续集成的作用:
    • 保证团队开发人员代码提交的质量,减轻软件发布时的压力。
    • 持续集成中任何一个环节都是自动完成,无需太多人工干预,有利于减少重复过程以节省时间、费用、工作量。

2.2 Jenkins简介

  1. 开源持续集成工具。
  2. 特点:
    • 易安装:java -jar jenkins.war即可运行。无需数据库。
    • 易配置:提供友好的GUI界面。
    • 变更支持:Jenkins能从(SVN/CVS)中获得产生代码更新列表,并输出到编译输出信息中。
    • 支持永久连接:用户是通过web来访问Jenkins的,web地址是永久的,可以在各种文档中使用地址。
    • 集成E-Mail,RSS,IM:当完成一次集成时,可以通过这些工具实时告诉集成结果。
    • Junit/TestNG测试报告:以图表等形式提供详细的测试报表功能。
    • 支持分布式构建:Jenkins可以把集成构建等工作分发到多台计算机中完成。
    • 文件指纹信息:Jenkins会保存哪次集成构建产生了哪些jars文件, 哪一次集成构建使用了哪个版本的jars文件等构建记录;
    • 支持第三方插件:使得Jenkins变得越来越强大。

// TODO 未完待续

标签:集成,容器,CI,jar,笔记,INFO,192.168,docker,2.11
来源: https://blog.csdn.net/qq_40366738/article/details/121090390

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有