Docker+Spring boot为环境变量赋值(普通变量和List变量)

Docker+Spring boot为环境变量赋值(普通变量和List变量)

  • Spring boot开发微服务,使用yml做配置文件,Docker方式部署。

  • 在不同环境中,需要对yml中的配置进行调整,本文主要介绍在以docker run方式运行时,如何为yml配置文件中的变量赋值。分为普通的环境变量、List变量。

  • 若想通过docker run为yml中变量赋值,对Spring boot启动类有一个要求,主函数必须有String[] args参数:

    @SpringBootApplication
    public class Application implements CommandLineRunner {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    
    
  • 以下面的配置为例:

    mqtt:
      uris: tcp://ip:1883
      username:
      password:
      client-id-prefix: ocal
    
      data-topics:
        list:
          - subscribe-topic: DataTopic
            publish-topics: /t/router/app/output
            framework-type: type1
          - subscribe-topic: /v1/message/request
            publish-topics: /v1/message/response
            framework-type: type2
    
  • 有如下几种方式为上面的配置文件赋值:

    方法一:使用下划线分隔大写形式

    确保环境变量的格式与 YML 路径相匹配,并使用下划线分隔层级:

    docker run --name computing \
      --restart=always \
      -e MQTT_URIS=tcp://127.0.0.1:1883 \
      -e MQTT_DATA_TOPICS_LIST_0_SUBSCRIBE_TOPIC=/v1/s1/data/input \
      -e MQTT_DATA_TOPICS_LIST_1_SUBSCRIBE_TOPIC=/v1/s1/message/input \
      computing:1.0
    
    

    注意:

    • 环境变量的名称与 YML 文件中的路径相关联,使用下划线 _ 代替点 . 和中横线 -
    • 数组索引从 0 开始。

方法二:使用 SPRING_APPLICATION_JSON 传递 JSON 格式配置

  • 使用 SPRING_APPLICATION_JSON 环境变量传递 JSON 格式的配置。这样可以确保复杂的嵌套结构被正确解析:

    docker run --name pdstars-edge-computing \
      --restart=always \
      -e SPRING_APPLICATION_JSON='{"mqtt": {"uris": "tcp://127.0.0.1:1883", "data-topics": {"list": [{"subscribe-topic": "DataTopic", "publish-topics": "/t/router/app/outpu", "framework-type": "type1"}, {"subscribe-topic": "/v1/message/request", "publish-topics": "/v1/message/response", "framework-type": "type2"}]}}}' \
      computing:1.1.0
    
    

方法三:使用配置文件挂载

  • 将配置文件保存在主机上,然后在运行容器时挂载到容器内部。例如,将新的配置文件保存在 /path/to/new-application.yml 中,然后使用 -v 参数挂载到容器内的默认配置路径:

    docker run --name computing \
      --restart=always \
      -v /path/to/new-application.yml:/config/application.yml \
      computing:1.0
    

相关推荐

  1. 变量对象的解构赋值

    2024-07-10 05:02:04       53 阅读
  2. 课时16:本地变量_普通变量

    2024-07-10 05:02:04       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 05:02:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 05:02:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 05:02:04       58 阅读
  4. Python语言-面向对象

    2024-07-10 05:02:04       69 阅读

热门阅读

  1. Python程序打包成EXE文件指南

    2024-07-10 05:02:04       25 阅读
  2. MongoDB 全文检索

    2024-07-10 05:02:04       22 阅读
  3. threejs

    2024-07-10 05:02:04       24 阅读
  4. python 进阶教程--PIL图像处理

    2024-07-10 05:02:04       25 阅读
  5. CSS 图标:简化设计,优化用户体验

    2024-07-10 05:02:04       29 阅读
  6. C# 中使用模式匹配 备忘

    2024-07-10 05:02:04       26 阅读
  7. 【selenium】元素等待

    2024-07-10 05:02:04       21 阅读
  8. HTMLtable表转C#DataTable

    2024-07-10 05:02:04       33 阅读
  9. WPF设置全局样式

    2024-07-10 05:02:04       26 阅读