• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Docker如何给Springboot项目动态传参的实现方法

    背景

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

    场景

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


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

    spring.datasource.url = jdbc:mysql://192.168.0.11:3306/db?useUnicode=true&characterEncoding=utf8
    #配置数据库用户名
    spring.datasource.username = sa
    #配置数据库密码
    spring.datasource.password = sa

    解决方案

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


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

    #配置数据库链接
    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配置我们的数据库参数

    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动态传参内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:详解SpringBoot项目docker环境运行时无限重启问题
    下一篇:利用 Docker 构建简单的 java 开发编译环境的方法详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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