Spring Docker Compose 使得本地运行项目无感依赖中间件
在本地开发环境中,项目常常依赖于多个中间件,如数据库(MySQL)、消息队列(Kafka)或者常用缓存(Redis)。为了处理这些依赖,将中间件安装到本地是一个常用的方法,但尽管如此,还是存在如下不足:
中间件安装有时会与环境产生冲突。
多个项目使用同一中间件时,配置不易统一。
每一次搭建新环境时,需重新配置和安装中间件。
为解决这些问题,我们可以使用 Docker Compose 来搭建一个完全容器化的本地中间件环境,使开发环境更加简单。
实施步骤
01 创建 docker-compose.yml 文件
在项目根目录下创建一个 docker-compose.yml
文件:
version: '3.9'
services:
mysql:
image: mysql:8.0
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: demo
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:7.0
container_name: redis
ports:
- "6379:6379"
kafka:
image: apache/kafka:latest
container_name: kafka
ports:
- "9092:9092"
volumes:
mysql_data:
02 配置 Spring Boot 项目
在 Gradle 中引入依赖:
implementation("org.springframework.boot:spring-boot-docker-compose")
在 Spring Boot 项目中修改 application.yml
:
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo?useSSL=false&serverTimezone=UTC
username: root
password: password
redis:
host: localhost
port: 6379
kafka:
consumer:
bootstrap-servers: localhost:9092
auto-offset-reset: earliest
producer:
bootstrap-servers: localhost:9092
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
03 启动服务器
在 IDEA 中 Run 服务或者使用 ./gradlew BootRun
即可。可以通过 docker ps
查看是否已正常启动中间件。
关闭服务,会自动删除容器。
04 控制是否启动
可以在不同的配置文件中开启或关闭。例如:在application.yml
中默认关闭,在applicaton-local.yml
。
spring:
docker:
compose:
enabled: false
写在最后
通过 Spring + Docker Compose,可以在本地实现服务无感依赖中间件,并使开发和维护环境更加效率。
启动项目时,一键运行,无需人工配置。
配置统一,随时重复使用
本地不再需要安装中间件
附录
SpringBoot 项目启动后,Docker Desktop 容器情况:
关闭应用后,自动关闭容器:
欢迎关注我的公众号“Eric技术圈”,原创技术文章第一时间推送。
License:
CC BY 4.0