我的世界字体
12822023-11-27
各位老铁们好,相信很多人对项目为什么用docker都不是特别的了解,因此呢,今天就来为大家分享下关于项目为什么用docker以及jenkins不建议docker部署的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!
本文目录
一个非常好的问题。我是工作多年的Web应用架构师,来回答一下这个问题。欢迎关注我,了解更多IT专业知识。
Docker是一个开源的应用容器引擎,将应用以及依赖打包到一个可移植的镜像中,部署到服务器并运行在Container容器实例中。
构建Docker镜像时,在实际使用中有一些误区:
1,Docker镜像由工程师在本地构建,然后推送到Dockerhub或者其他镜像仓库。
2,程序编译打包使用Jenkins自动构建,得到运行包后上传到代码库中,手动或者自动构建Docker镜像。
3,。。。
Docker镜像应该通过自动构建系统,从源代码开始,编译打包,构建镜像,不应该手动上传下载运行包,也不应该使用预先编译好的运行包。
阿里云容器镜像服务提供Docker镜像仓库托管,配置项目代码Git仓库和构建规则,轻松实现自动化。进一步结合Dockerfile强大功能实现云端编译打包。
操作演示:https://www.ixigua.com/i6802181124291461639/
详细配置步骤:https://www.toutiao.com/i6802179342320271879/
SpringBoot项目可以生成两种部署包:一种是jar包,一种是War包
jar包(官方推荐)
jar包方式启动,也就是使用springboot内置的tomcat运行。服务器上面只要你配置了jdk1.8及以上,就ok。不需要外置tomcat
1.打成jar包
2.将jar包放到任意目录,执行下面的命令
$nohupjava-jartest.jar>temp.txt&
//这种方法会把日志文件输入到你指定的文件中,没有则会自动创建。进程会在后台运行。
war包
传统的部署方式:将项目打成war包,放入tomcat的webapps目录下面,启动tomcat,即可访问。
对于打包,到项目根路径:执行mvncleanpackage就OK
项目为什么要用docker,需要了解docker的优势,结合项目的实际情况来决定是否需要使用docker,千万不能“为了使用而使用”或者“跟风使用docker”。
使用docker是为了快速交付和传统的虚拟机相比,docker具有所用的资源更少、性能更高、隔离级别更高、安全性方面也更强等特点,让我们看看下面几个场景,估计你会有更深的体会。
01.移植性更强
相信开发人员都会遇到这样的问题:代码在本地跑的好好的,但是一发布到测试环境怎么就有问题了呢?
通常我们的的代码包需要依赖于环境中的很多因素,比如配置文件、依赖库、中间件的配置等等,其中一项有问题可能都会导致我们代码出现问题;对于开发人员来说,最希望的就是我们的代码能够一次创建,在任意地方都能运行。
而使用docker之后,可以实现开发、测试、运维环境的标准化,镜像文件直接做为交付物,避免了因为环境不同导致的各种问题。
02.更容易扩展
docker容器可以在任意平台运行,不管是物理机还是虚拟机,不管是公有云还是私有云,甚至是个人电脑,所以我们的项目容易做迁移和扩展。
比如我们应用部署了两台机器,当我们想再扩展第三台机器的时候,我们需要先搭建好代码运行所需的环境,尽管虚拟机也有一些快速copy的技术,但是这个过程依然是很慢的,而且有些环境配置还容易出错,而有了docker,只需要构建镜像然后运行即可,非常方便快速。
因为docker快速的构建方式,也让我们的项目可以实现自动且快速的扩容和缩容。
03.更加轻量
在docker出现之前,通常会采用物理机上部署多台虚拟机,每个应用都部署在一个虚拟机中;但是虚拟机非常的重,虚拟机的构建速度通常都是按照分钟计算,占用的资源比较多。
而docker的速度很快,秒级,并且使用的资源更少,性能更高;同样一个物理机器,docker运行的镜像数量远多于虚拟机的数量。
使用docker只是快速交付的一部分docker的优点这么多,那是不是用了docker之后,我们的交付速度更快了呢?
我见过一个项目,他们号称已经微服务化了,当然他们确实也做到了:把一个项目拆成了数个服务,每个服务在生产环境上部署了多套,算下来就是N*M个应用包(七八十个),都做了容器化...
但是他们依然是人肉运维,也是就是他们每次提测和上线需要手动部署,没有自动化测试和发布;
生产环境发生问题的时候,需要手动去拿日志跟踪问题,开发和运维依然是两个团队,甚至是所属两个不同的部门,沟通的成本很高;
他们虽然实现了容器化,但其实并没有实现快速交付,甚至比传统的方式更慢了。
所以,不要为了docker而docker;如果你们的项目环境配置复杂,每来一个新人配置环境都需要一两天;每次提测和上线,经常问题都是运行环境的问题;开发人员的开发环境不统一;开发能力强,运维能力弱的时候,甚至公司比较穷,想实现资源使用的最大化,都可以考虑使用docker,不过像要做微服务化+容器化,当容器集群规模比较大的时候,还需要工具做容器的自动化管理和编排,自动化测试及部署等等。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。首先:jenkins是什么?
“Jenkins是一款由Java编写的开源的持续集成工具。在与Oracle发生争执后,项目从Hudson项目复刻。Jenkins提供了软件开发的持续集成服务。它运行在Servlet容器中(例如ApacheTomcat)。”
其次:jenkins有什么作用?
1.代码集成->编译->打包->测试环境部署->自动化测试执行->结果。
2.代码集成:将不同分支的代码集成到一起。代码管理工具一般使用svn、git.
3.编译:使用maven或者ant(eclipse等编译器)进行代码的编译,将其转化为class文件。.
4.打包:将编译好的代码打成可执行的war包或者安装包。
5.测试环境部署:将war包部署到测试服务器上,更新环境。
6.自动化测试:在部署好的测试环境上自动执行自动化测试。
再次:基于windows环境安装jenkins
1、将war包copy到tomcat的webapps下
2、启动tomcat会自动部署安装jenkins。
3、安装过程见操作文档。
4、如果忘记用户名密码只能重装,卸载的方法:将tomcat的webapps目录下的jenkins项目删除,然后删除用户目录下的.jenkins目录,再按照流程重装。
第1步操作
第2步操作:在tomcat目录下的bin目录下启动start.bat文件
第3步:部署完成访问首页如下图所示:
基于jenkins运行自动化测试
1.新增一个执行bat脚本的构建步骤,运行自动化脚本。
2.配置好执行路径
E:
cdE:\software\workspace\Python_TestCase\src\Web_TestCase
AllTests.py
3.安装好邮件插件,配置好邮件服务。
4.定时执行构建任务。
5.执行自动化测试
测试运行过程状态如下图所示:
总结:通过上面内容的学习,我们知道什么是jenkins,jenkins用来做什么的,平时一般在什么情况下应用jenkins,今天这堂课程主要告诉大家如何安装并使用jenkins来设置定时任务,以及编写命令来执行自动化测试,平时在测试的工作过程中我们不仅仅用来执行自动化测试,还可以使用jenkins用来部署测试环境,获取代码版本等编译过程,全部都做成定时任务,相对传统测试更智能,希望大家能够掌握今天的相关知识点。
如果你还想了解更多这方面的信息,记得收藏关注本站。