Docker如何给Springboot项目动态传参的实现方法

2025-05-27 0 46

背景

最近有些初学Docker的朋友问到,想通过docker-compose.yml来动态给微服务传参,而不是每次都要在项目配置文件硬编码,然后构建服务镜像,最后打包发布经过一些列流程才能更新配置,那能不能直接通过docker-compose.yml里把一些配置项放到环境变量,然后springboot项目自动从环境变量获取参数呢?

场景

假设现在有一个Springboot项目,它里面有一个数据库的配置项,但是不同的数据库测试环境(DEV\\SIT\\UAT),数据库ip有多个,想使用同一个Springboot项目镜像,可以随时切换数据库配置,简单来说就是你的Springboot应用的数据库配置应该是通过外部传入,而不是hardcode.

Docker如何给Springboot项目动态传参的实现方法

Springboot应用里有个数据库配置如下:

?

1

2

3

4

5
spring.datasource.url = jdbc:mysql://192.168.0.11:3306/db?useUnicode=true&characterEncoding=utf8

#配置数据库用户名

spring.datasource.username = sa

#配置数据库密码

spring.datasource.password = sa

解决方案

利用SpEL表达式,动态从环境变量获取数据库配置

Docker如何给Springboot项目动态传参的实现方法

接下来我们在Springboot配置文件把数据库配置用spEL表达式替换

?

1

2

3

4

5

6
#配置数据库链接

spring.datasource.url = jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}?useUnicode=true&characterEncoding=utf8

#配置数据库用户名

spring.datasource.username = ${DB_USER}

#配置数据库密码

spring.datasource.password = ${DB_PASSWORD}

docker-compose.yml配置我们的数据库参数

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28
version: '3'

services:

web:

restart: always

depends_on:

- db

image: springboot-app-image

build: .

ports:

- 8080:8080

environment:

- DB_HOST=192.168.0.11

- DB_PORT=3306

- DB_USER=root

- DB_PASSWORD=123456

- DB_NAME=db

networks:

- credit-facility-net

deploy:

mode: replicated

replicas: 3

restart_policy:

condition: on-failure

delay: 5s

max_attempts: 3

update_config:

parallelism: 1

delay: 10s

这样我们的Springboot应用就可以在启动容器服务的时候动态获取数据库配置了

到此这篇关于Docker如何给Springboot项目动态传参的实现方法的文章就介绍到这了,更多相关Docker Springboot动态传参内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://www.cnblogs.com/evan-liang/p/12488207.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 行业资讯 Docker如何给Springboot项目动态传参的实现方法 https://www.kuaiidc.com/65506.html

相关文章

发表评论
暂无评论