前言

接上篇文章SpringBoot脚手架工程系列(2):代码格式化/质量审核/提交检查,赋予了脚手架工程完善的代码格式化/质量审核/提交检查能力。让我们继续来完善脚手架,提高脚手架的工程本地运行&调试能力,帮助团队能在此工程的基础上能进行快速开发。

痛点

目前我们的SpringBoot脚手架工程依赖了MySQL数据库,在本地日常功能开发中,如果想要启动SpringBoot服务必须要先在本地启动MySQL,这就需要团队中的每个成员都得在本地安装一遍MySQL,假如说后续项目又依赖了Redis,ElasticSearch,MQ这些中间件,那每个人还得在本地安装更多的外部服务,这无疑会给团队带来更多的开销,那有没有一种办法可以让团队成员不需要关心如何搭建本地开发环境,一条命令就可以将服务启动呢?
答案是可以利用docker-compose来一键启动服务,不用再关心如何搭建外部服务。

利用docker-compose搭建本地开发环境

在项目的根目录下新建docker-compose.yml文件,文件内容如截图所示,可能需要一定的docker基础才能比较清楚文件中各项配置的含义,我在截图中已大概标记出各项配置的含义。

可以理解为通过docker-compose文件定义了2个服务“simple-scaffold”和“mysql-local”,对应的就是我们的脚手架工程和本地mysql,然后可以使用docker-compose up命令启动定义好的服务,这样本地开发的时候除了需要安装好docker和docker-compose之外,其他的工作都提前定义在了docker-compose.yml文件中。

java脚手架 专利 脚手架springboot_docker


接着我们在项目根目录下执行docker-compose up命令,会发现定义的两个服务可以正常启动,并且mysql-local会先于simple-scaffold启动。

java脚手架 专利 脚手架springboot_spring boot_02

自定义环境变量的使用

我们在docker-compose.yml的simple-scaffold服务中定义了环境变量,可以直接在应用程序中通过${xxx}获取到,方便灵活修改配置。

java脚手架 专利 脚手架springboot_docker_03

调试功能的开启

在build.gradle中新增了bootRun执行时的JVM参数,使用5005端口作为debug端口,这样我们可以通过IDEA随时debug应用程序。

java脚手架 专利 脚手架springboot_spring boot_04


选择“Remote JVM Debug”,然后输入端口,我们主机的调试端口是5055,这个端口是在docker-compose.yml中定义的。

java脚手架 专利 脚手架springboot_MySQL_05

我们点击Debug按钮会发现进入了Debug调试,此时就可以在需要的地方打断点进行调试了。

java脚手架 专利 脚手架springboot_java_06

结语

利用docker-compose让我们可以一键启动服务,让团队中的成员不需要花费精力在搭建本地开发环境上,可以享受更高效的本地开发体验。