近一、两年,SPRingBoot和Docker可以说非常的火热啊,而早在2015年的时候我就弄过一下Docker,不过由于职位和跳槽等种种原因,2016年就很少搞了,不过现在再捡起来也是很容易的。而SpringBoot我也是最近才开始学的,不知道有木有落伍哈。微服务概念的提出的同时也把这几个技术带到了高潮,现在就来实践一把。
其中Gitlab主要是用来存放代码的仓库以及触发构建。关于这个怎么集成可以查看我先前写的一篇博文 Jenkins+Gitlab搭建CI持续集成架构。
Jenkins、Gitlab的安装在上面那篇博文中有说明,Docker的安装配置在我之前写的另一篇博文sonatype nexus 3搭建Docker私有仓库中也有说到,这里就不过多介绍了。
SpringBoot项目骨架可以在官方网站上进行下载:https://start.spring.io/ 这个也不多说了。。。
整个项目以一个springboot-jpa为示例,最后面会给出源码,详细的说明可以参看源码吧。 项目结构如下:
其中Dockerfile为构建docker镜像的脚本,在这里我使用的是自己制作的私服镜像,如果要在公网上使用可以打开注释换一个,关于Docker私服的搭建使用也可以参看我之前的那篇博文。 项目根目录中的build.sh为打包构建启动容器的脚本,在jenkins项目构建步骤中可以直接执行该脚本。
项目resources目录中的schema.sql为启动应用时初始化创建表结构的文件,data.sql为填充数据表内容的文件,这个仅为测试使用。SpringBoot会自动调用这个2个文件的,我们不用管。
项目代码很简单,好像也没什么好说的哈,数据库源的配置都在application.properties
文件中,如果要测试使用的话需要替换下数据库源,其他的看下代码就行了。
创建jenkins项目,输入项目名,选择自由风格。配置需要注意的只有两点,一个是:源码管理,二个是:构建的步骤。
我们这里使用的是Gitlab作为源码管理,所以选择Git,输入远程仓库名和用户认证。这个没有配置正确是无法从远程仓库下载源码的,提示权限问题。关于认证的配置也请参看我之前的博文Jenkins子节点构建配置,这里不做过多的详细介绍了。
构建步骤也很简单,直接执行项目根目录中的那个构建脚本就行了。 这里需要注意的是环境变量问题,我是将JDK和Maven等工具变量都写在/etc/profile
文件中的,内容很简单,在文件最后面添加以下内容,这个根据不同的环境进行配置即可:
这里需要注意:默认Docker命令只能root用户使用,jenkins用户是没有权限使用的,我们可以将jenkins用户加入docker组中,然后再断开、注销、连接就可以了。
将jenkins用户添加进docker组$ sudo gpasswd -a jenkins docker构建完成后,还可以选择push上传镜像,这个需要先登录才行。代码在build.sh
构建脚本中有,我这里使用的是私服,可以根据需要进行修改。
大概的步骤就这么些,实际公司内操作可能没这么简单,这里仅作为学习参考使用。源码: https://github.com/lusyoe/springboot-jpa
参考文档: https://spring.io/guides/gs/spring-boot-docker/
新闻热点
疑难解答