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
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/777814.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

最灵活且易用的C++开源串口通信调试软件

这款C开源串口调试软件,集成了丰富的功能,为用户提供高效、便捷的串口通信调试体验。以下是其核心功能亮点: 基础功能: 数据交互自如:支持串口数据的轻松读取与发送,让数据交换变得简单直接。 灵活配置参…

【后端面试题】【中间件】【NoSQL】MongoDB查询优化3(拆分、嵌入文档,操作系统)

拆分大文档 很常见的一种优化手段,在一些特定的业务场景中,会有一些很大的文档,这些文档有很多字段,而且有一些特定的字段还特别的大。可以考虑拆分这些文档 大文档对MongoDB的性能影响还是很大的,就我个人经验而言&…

【TB作品】基于ATmega48的开机登录程序设计

使用Proteus仿真软件设计一个开机登录程序,单片机选用ATmegga48. 基础要求: 1.程序启动后在LCD1602液晶屏上提示用户通过独立按键输入密码(6位)。 2.密码输入错误则在屏幕上提示密码错误,密码输入正确则在屏幕上提示密 码正确后等待约3秒后进入主界面,在屏幕中央显示HelloWorld…

基于RK3588的8路摄像头实时全景拼接

基于RK3588的8路摄像头实时全景拼接 输入:2路csi转8路mpi的ahd摄像头,分辨率1920 * 1080 8路拼接结果: 6路拼接结果: UI界面: UI节目设计原理

数字时代如果你的企业还未上线B端系统助力则后果很严重

**数字时代如果你的企业还未上线B端系统助力则后果很严重** 数字化浪潮席卷全球,企业对于数字化转型的重视程度日益提高。B端系统,作为企业数字化转型的核心组成部分,其重要性不言而喻。如果你的企业还未上线B端系统助力,那么后果…

异步主从复制

主从复制的概念 主从复制是一种在数据库系统中常用的数据备份和读取扩展技术,通过将一个数据库服务器(主服务器)上的数据变更自动同步到一个或多个数据库服务器(从服务器)上,以此来实现数据的冗余备份、读…

2024年6月后2周重要的大语言模型论文总结:LLM进展、微调、推理和对齐

本文总结了2024年6月后两周发表的一些最重要的大语言模型论文。这些论文涵盖了塑造下一代语言模型的各种主题,从模型优化和缩放到推理、基准测试和增强性能。 LLM进展与基准 1、 BigCodeBench: Benchmarking Code Generation with Diverse Function Calls and Com…

图文识别0难度上手~基于飞浆对pdf简易ocr并转txt

前言 本篇pdf适用windows对视觉识别0基础的的纯小白用户。大佬请绕道~~ 注意: 本项目pdf的ocr对于表格、画图文字,水印等干扰没做任何处理,因此希望各位使用该功能的pdf尽量不要含有这些干扰项,以免影响翻译效果。 流程 1.构建…

收银系统源码-收银台副屏广告

1. 功能描述 门店广告:双屏收银机,副屏广告,主屏和副屏同步,总部可统一控制广告位,也可以给门店开放权限,门店独立上传广告位; 2.适用场景 新店开业、门店周年庆、节假日门店活动宣传&#x…

Nginx实战:nginx性能压测(ab)

在nginx的生产实践中,不管是服务上线,还是性能优化,都会遇到需要对nginx的性能压测,本文介绍一个简单的压测工具:ab命令 ab(Apache Bench)是一个常用的HTTP压力测试工具,可以用来测试Nginx的性能和压力。ab命令可以指定并发请求数、请求数、请求类型等参数,并输出测试…

SpringBoot 启动流程四

SpringBoot启动流程四 前面这个创建对象是初始化SpringApplication对象 是加载了SpringBoot程序的所有相关配置 我们接下来要将这个run方法 run过程是一个运行 初始化容器 我们看我们的运行结果是得到一个ConfigurableApplicationContext对象 package com.bigdata1421.star…

MySQL 集群

MySQL 集群有多种类型,每种类型都有其特定的用途和优势。以下是一些常见的 MySQL 集群解决方案: 1. MySQL Replication 描述:MySQL 复制是一种异步复制机制,允许将一个 MySQL 数据库的数据复制到一个或多个从服务器。 用途&…

医疗器械企业CRM系统推荐清单(2024版)

近年来,我国医疗器械行业在国家政策支持、医改深入、人口老龄化和消费能力提升等因素推动下,得到了快速发展,正日益成为创新能力增强、市场需求旺盛的朝阳产业。然而,行业也面临价格压力、市场份额重新分配、合规风险以及产品和服…

mac 安装nvm的教程

在macOS上切换Node.js版本,可以使用nvm(Node Version Manager)。以下是安装nvm和切换Node.js版本的步骤: 安装nvm 下载方式 终端复制输入: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.…

Odoo14使用hiPrint实现打印功能

使用hiPrint代替odoo原生的打印功能 可以实现快速自定义修改打印模板,无需每次都调整打印模板 无论是表单分页还是各种需求,都能满足 目录 1 使用命令创建新的模块,无用的demo文件可以删除掉 2 新建“打印模板”,用于保存打印…

MySQL表的增删改查(CRUD)

MySQL表的增删改查(CRUD) 文章目录 MySQL表的增删改查(CRUD)1. Create1.1 单行数据 全列插入1.2 多行数据 指定列插入1.3 插入否则更新1.4 替换 2. Retrieve2.1 SELECT 列2.1.1 全列查询2.1.2 指定列查询2.1.3 查询字段为表达式…

嵌入式系统中状态机实现详解

嵌入式开发中系统经常处于某种状态,如何处理呢?接下来分析一下,状态机的实现无非就是 3 个要素:状态、事件、响应。转换成具体的行为就 3 句话。 发生了什么事? 现在系统处在什么状态? 在这样的状态下发生了这样的事,系统要干什么? 用 C 语言实现状态机主要有 3 种方法…

JVM专题之垃圾收集算法

标记清除算法 第一步:标记 (找出内存中需要回收的对象,并且把它们标记出来) 第二步:清除 (清除掉被标记需要回收的对象,释放出对应的内存空间) 缺点: 标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需 要分配较大对象时,无法找到…

spark on k8s两种方式的原理与对比

spark on k8s两种方式的原理与对比 1、spark on k8s 方式 spark-submit可以直接用来向 Kubernetes 集群提交 Spark 应用,提交机制如下: 1、Spark 创建一个在Kubernetes pod中运行的 Spark 驱动程序。 2、驱动程序创建在 Kubernetes Pod 中运行的执行器…