铁雪资源网 Design By www.gsvan.com

背景

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

场景

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

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

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

spring.datasource.url = jdbc:mysql://192.168.0.11:3306/db"color: #ff0000">解决方案

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

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

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

#配置数据库链接
spring.datasource.url = jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}"htmlcode">
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动态传参

铁雪资源网 Design By www.gsvan.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
铁雪资源网 Design By www.gsvan.com

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

暂无Docker如何给Springboot项目动态传参的实现方法的评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。