Dockerfile构建服务镜像_gogs搭建git_Jenkins持续集成总结
什么是 Dockerfile
Dockerfile 是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
- 对于开发人员:可以为开发团队提供一个完全一致的开发环境;
- 对于测试人员:可以直接拿开发时所构建的镜像或者通过 Dockerfile 文件构建一个新的镜像开始工作了;
- 对于运维人员:在部署时,可以实现应用的无缝移植。
常用命令
|
|
Dockerfile 构建 Eureka 镜像
在需要打包的微服务项目的pom里面引入springboot打包插件
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
把需要部署的微服务,拖动到,idea的Terminal模块里边输入一下命令
|
|
打包成功后会在该项目的taget文件夹中生成一个jar包
$\color{red}{注意:一定要先引入插件依赖,不然虽然构建成功,但是没把依赖也打包上去,会跑不起来}$
上传 jar 包到 linux
创建一个新目录
|
|
把 jar 包拷贝到/usr/local/eureka 目录下
在/usr/local/eureka 目录下创建 Dockerfile 文件
|
|
内容如下:
|
|
构建 eureka 镜像
|
|
$\color{red}{注意后面点要加上,代表当前目录下}$
镜像上传至私有仓库
先标记此镜像为私有仓库的镜像
|
|
上传标记的镜像
|
|
查看远程镜像
|
|
查看某个镜像的标签列表
|
|
查看运行日志 ,在docker run之后运行
|
|
DockerMaven 插件自动发布 Eureka
微服务部署有两种方法:
手动部署:首先基于源码打包生成 jar 包(或 war 包),将 jar 包(或 war 包)上传至虚拟机并拷贝至 JDK 容器。
通过 Maven 插件自动部署。
对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这里学习如何自动部署,这也是企业实际开发中经常使用的方法。
Maven 插件自动部署步骤:
修改宿主机的 docker 配置,让其可以远程访问
|
|
其中 ExecStart=后添加配置
|
|
修改后刷新重启
|
|
在xxx_eureka 工程 pom.xml 增加配置
<project>
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- docker的maven插件,官网:
https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<imageName>192.168.2.2:5000/${project.artifactId}:${project.version}</imageName>
<baseImage>ascdc/jdk8</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.2:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
</project>
以上配置会自动生成 Dockerfile
|
|
在 windows 的命令提示符下,进入 tensquare_eureka 工程所在的目录,输入以下命令,进行打包和上传镜像
|
|
执行后,会有如下输出,代码正在上传
浏览器访问 http://192.168.2.2:5000/v2/_catalog ,输出
浏览器访问 http://192.168.2.2:5000/v2/_catalog ,输出
|
|
进入宿主机 , 查看镜像
|
|
启动容器:
理解持续集成
什么是持续集成
持续集成 Continuous integration ,简称 CI
随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发
的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile)在软件工
程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重
要。
持续集成正是针对这一类问题的一种软件开发实践。它倡导团队开发成员必须经常集成
他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,
包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发内聚的软件。
持续集成的特点
- 它是一个自动化的周期性的集成测试过程,从检出代码、编译构建、运行测试、结果记录、测试统计等都是自动完成的,无需人工干预;
- 需要有专门的集成服务器来执行集成构建;
- 需要有代码托管工具支持
持续集成的作用
- 保证团队开发人员提交代码的质量,减轻了软件发布时的压力;
- 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重复过程以节省时间、费用和工作量;
什么是 Gogs
Gogs 是一款极易搭建的自助 Git 服务。
Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语
言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包
括 Linux、Mac OS X、Windows 以及 ARM 平台。
地址:https://gitee.com/Unknown/gogs
Gogs 的安装与配置
下载镜像
|
|
创建容器
|
|
配置
假设我的 centos 虚拟机 IP 为 192.168.2.2 完成以下步骤
在地址栏输入 http://192.168.2.2:3000 会进入首次运行安装程序页面,我们可以选择一种数据库作为 gogs 数据的存储,最简单的是选择 SQLite3。如果对于规模较大的公司,可以选择 MySQL
- 设置好数据库信息,点击安装gogs
- 新建一个仓库
- 连接idea
- 在本地安装 git(Windows 版本)
- 在 IDEA 中选择菜单 : File – settings , 在窗口中选择 Version Control – Git
- 将十次方代码提交到 Git
- 选择菜单 VCS –> Enable Version Control Integration..
- 选择 Git
- 设置远程地址: 右键点击工程选择菜单 Git –> Repository –>Remotes… –>添加git的地址
- 右键点击工程选择菜单 Git –> Add
- 右键点击工程选择菜单 Git –> Commit Directory…
- 右键点击工程选择菜单 Git –> Repository –> Push …
运行 Jenkins 实现持续集成
Jenkins 简介
Jenkins,原名 Hudson,2011 年改为现在的名字,它 是一个开源的实现持续集成的软件工
具。官方网站: http://jenkins-ci.org/。
Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的
形式形象地展示项目构建的趋势和稳定性。
特点:
易安装:
仅仅一个 java -jar jenkins.war,从官网下载该文件后,直接运行,无需额外的安装,更无需安装数据库;
易配置:
提供友好的 GUI 配置界面;
变更支持:Jenkins 能从代码仓库(Subversion/CVS)中获取并产生代码更新列表并输出到编译输出信息中;
支持永久链接:
用户是通过 web 来访问 Jenkins 的,而这些 web 页面的链接地址都是永久链接地址,因此,你可以在各种文档中直接使用该链接;
集成 E-Mail/RSS/IM:
当完成一次集成时,可通过这些工具实时告诉你集成结果(据我所知,构建一次集成需要花费一定时间,有了这个功能,你就可以在等待结果过程中,干别的事情);
JUnit/TestNG 测试报告:
也就是用以图表等形式提供详细的测试报表功能;
支持分布式构建:
Jenkins 可以把集成构建等工作分发到多台计算机中完成;
文件指纹信息:
Jenkins 会保存哪次集成构建产生了哪些 jars 文件,哪一次集成构建使用了哪个版本的 jars 文件等构建记录;
支持第三方插件:
使得 Jenkins 变得越来越强大
Jenkins 安装
安装jdk
将 jdk-8u171-linux-x64.rpm 上传至服务器(虚拟机)
执行安装命令
|
|
Jenkins 安装与启动
下载 jenkins
|
|
安装 jenkins
|
|
配置 jenkins
|
|
修改用户和端口
|
|
启动服务
|
|
访问链接 http://192.168.2.2:8888
从/var/lib/jenkins/secrets/initialAdminPassword 中获取初始密码串
安装插件
![alt getting started](/img/getting started.png)
![alt getting started1](/img/getting started1.png)
jenkins忘记账号和密码操作
|
|
jenkins需要安装maven插件与git插件
配置maven仓库指定setting配置文件
Linux需要下载maven以及mave仓库和git
执行此步是为了以后在打包的时候不必重新下载,缩短打包的时间。
全局工具配置
指定jdk
指定maven
手动发布
集成发布
- 原文作者:Jeremy Sze
- 原文链接:https://jeremy95-sze.github.io/post/Dockerfile%E6%9E%84%E5%BB%BA%E6%9C%8D%E5%8A%A1%E9%95%9C%E5%83%8F%E6%80%BB%E7%BB%93/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。