V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
a1oyss0925
V2EX  ›  程序员

私有化部署服务时配置文件如何实现动态

  •  
  •   a1oyss0925 · 270 天前 · 1248 次点击
    这是一个创建于 270 天前的主题,其中的信息可能已经有所发展或是发生改变。

    客户要求服务部署到本地服务器上,服务是根据业务做了多模块。 原本的方案每多一个本地部署的需求,就在每个模块的 resources 下加一个文件夹,打包的时候通过选择 profiles 只打包那个文件夹下的配置,但是因为模块有点多,所以每次新增一堆东西很麻烦。

    现在像减少重复的工作,试图把每个模块的 profiles 移除掉,统一使用父 pom 中的 profiles ,在里面配置变量,因为项目只用了 mysql ,redis ,所以配置项也不多,配置如下:

    # applicaiton.yml
    spring:
      profiles:
        active: @profiles.active@
    
    server:
      port: 8010
    
    # application-prod.yml
    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        driverClassName: com.mysql.cj.jdbc.Driver
        dynamic:
          primary: master
          datasource:
            master:
              url: @mysql.master.url@
              username: @mysql.master.username@
              password: @mysql.master.password@
            slave:
              url: @mysql.slave.url@
              username: @mysql.slave.username@
              password: @mysql.slave.password@
      redis:
        host: @redis.host@
        sentinel:
          master: @redis.sentinel.master@
          nodes: @redis.sentinel.nodes@
        password: @redis.password@
        timeout: 10s
    

    但是尝试了下打包,发现并不能正确写入变量,请问还有什么好的解决方案吗。(配置中心怕是不行,领导估计是不让用)

    7 条回复    2024-04-02 14:55:51 +08:00
    ChoateYao
        1
    ChoateYao  
       270 天前
    使用 spring.profiles.group 实现,其他配置文件只要放在一个文件夹里面就行了
    kennfalcon
        2
    kennfalcon  
       270 天前
    maven 里打包是不是没有配置变量替换信息
    jinjiang2024
        3
    jinjiang2024  
       270 天前
    host 和 url 使用别名映射,其他用户名和密码统一 不就可以实现了
    jinjiang2024
        4
    jinjiang2024  
       270 天前
    类似这种
    # redis 配置
    redis:
    # 地址
    host: redisTest
    # 端口,默认为 6379
    port: 6379
    # 密码
    password: 123456
    # 连接超时时间
    timeout: 10s
    a1oyss0925
        5
    a1oyss0925  
    OP
       270 天前
    @kennfalcon 配置了,应该是子模块里没写的原因
    lwq84510
        6
    lwq84510  
       269 天前
    使用环境变量 export SERVER_PORT=10086, 配置文件加载环境变量 server.port=${SERVER_PORT:8848}
    babhbsbx
        7
    babhbsbx  
       269 天前
    今天搭新项目,遇到的问题,我的解决办法如下
    在 build 标签下添加如下内容

    <resources>
    <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
    </resource>
    </resources>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2546 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 15:10 · PVG 23:10 · LAX 07:10 · JFK 10:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.