首页 > 系统相关 >shell动态修改yml配置实例

shell动态修改yml配置实例

时间:2024-11-15 21:30:34浏览次数:1  
标签:shell grep spring configpath strenv 实例 && yq yml

yq安装

      https://github.com/mikefarah/yq/tree/master

       

      每个yq版本支持的选项参数都不一样

     

 修改Dockerfile

[root@instance base-tlog-test]# vi Dockerfile 

FROM 192.168.30.113/library/java:latest
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
VOLUME /tmp
ADD license.json license.json
ADD ca.crt ca.crt
ADD tlog tlog
ADD yq /usr/bin/yq
WORKDIR /tlog
ADD start_tlog.sh /tlog/start_tlog.sh

ENTRYPOINT ["sh","/tlog/start_tlog.sh"]
View Code

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","./lib/TLog.jar","/license.json"]

#!/bin/sh
configpath="./config/application.yml"

datasoureurl=`env | grep spring.datasource.url`
dburl=${datasoureurl#*=}
datausername=`env | grep spring.datasource.username | cut -d"=" -f2`
datapassword=`env | grep spring.datasource.password | cut -d"=" -f2`
redisdatabase=`env | grep  spring.redis.database | cut -d"=" -f2`
redishost=`env | grep spring.redis.host | cut -d"=" -f2`
redisport=`env | grep spring.redis.port | cut -d"=" -f2`
redispassword=`env | grep spring.redis.password | cut -d"=" -f2`
promhost=`env | grep Prometheus.host | cut -d"=" -f2`
promport=`env | grep Prometheus.port | cut -d"=" -f2`
tlogport=`env | grep server.port | cut -d"=" -f2`

[ ${dburl} ] && dburl=${dburl} yq  -i '.spring.datasource.url=strenv(dburl)' ${configpath}
[ ${datausername} ] && datausername=${datausername} yq  -i '.spring.datasource.username=strenv(datausername)' ${configpath}
[ ${datapassword} ] && datapassword=${datapassword} yq -i '.spring.datasource.password=strenv(datapassword)' ${configpath}
[ ${redisdatabase} ] && redisdatabase=${redisdatabase} yq  -i '.spring.redis.database=strenv(redisdatabase)' ${configpath}
[ ${redishost} ] && redishost=${redishost} yq -i '.spring.redis.host=strenv(redishost)' ${configpath}
[ ${redisport} ] && redisport=${redisport} yq  -i '.spring.redis.port=strenv(redisport)' ${configpath}
[ ${redispassword} ] && redispassword=${redispassword}  yq -i '.spring.redis.password=strenv(redispassword)' ${configpath}
[ ${promhost} ] && promhost=${promhost} yq  -i '.Prometheus.host=strenv(promhost)' ${configpath}
[ ${promport} ] && promport=${promport} yq -i '.Prometheus.port=strenv(promport)' ${configpath}
[ ${tlogport} ] && tlogport=${tlogport} yq -i '.server.port=strenv(tlogport)' ${configpath}

java -Djava.security.egd=file:/dev/./urandom -jar ./lib/TLog.jar /license.json
start_tlog.sh

 

设置环境变量

         

      

通过jq这个shell工具可以动态修改yml配置文件里面的配置项目 

 

标签:shell,grep,spring,configpath,strenv,实例,&&,yq,yml
From: https://www.cnblogs.com/yxh168/p/18548686

相关文章

  • Shell编程-1
     声明:学习视频来自b站up主泷羽sec,如涉及侵权马上删除文章感谢泷羽sec团队的教学视频地址:shell脚本(1)脚本创建执行与变量使用_哔哩哔哩_bilibili 一、Shell脚本的创建与执行1.创建    创建一个.sh文件,使用vim编辑文件内容2.执行(1)./1.sh#使用默认的shell解释器......
  • Windows PowerShell(命令行程序) v7.5.0 RC 1 中文绿色版
    PowerShell是一种任务自动化和配置管理框架,可让IT专业人员完成日常任务。它包括一个命令行Shell、一个工具箱和一个脚本语言。软件功能任务自动化:PowerShell可以自动化繁琐、重复的IT任务,比如设置用户帐户、系统设置、安装应用程序等等。统一的管理接口:PowerShell提供一致的......
  • 泷羽sec-shell脚本创建执行与变量使用
    shell脚本创建vimxx.sh可以利用#!/bin/bash、#!/bin/dash、#!/bin/sh这三种其实不管用哪种脚本解释器最后调用的还是这个dash比如ls-lbin/sh发现调用的还是dash执行方法一./xx.sh #默认没有执行权限chmod+xxx.sh方法二shxx.shbashxx.shdashxx.sh......
  • shell的俄罗斯方块
    代码如下#!/bin/bash#TetrisGame#APPdeclarationAPP_NAME="${0##*[\\/]}"APP_VERSION="1.0"#颜色定义cRed=1cGreen=2cYellow=3cBlue=4cFuchsia=5cCyan=6cWhite=7colorTable=($cRed$cGreen$cYellow$cBlue$cFuchsia$cCyan$cWhite)......
  • 2、oracle实例、软件、库简单讲解
    oracle的基本结构oracle软件(RDBMS)oracle软件:关系型数据库管理系统在linux系统上,oracle软件安装在:/u01/app/oracle这个目录下oracle数据库(database)oracle数据库:它是由一推文件组成,建数据库(使用dbca命令建库),建立在/oradata这个目录下数据库里面放的就是表数据库和软件是完全......
  • shell脚本案例三十 (带详解) (上)
    Shell案例(30)案例一:备份文件1.问题:(1).用户输入为空(2).用户输入错误(3).怎么备份文件2.分析:(1).用户输入为空返回输入(2).用户输入错误退出脚本(3)使用rsync命令同步文件3.流程图:4.实现:1) #!/bin/bash2) while:3) do4) read-p"请输入你要备份的文件所在......
  • 第16章 Shell企业编程基础
    说到Shell编程,很多从事Linux运维工作的朋友都不陌生,都对Shell有基本的了解,初学者可能刚开始接触Shell的时候,有各种想法,感觉编程非常困难,SHELL编程是所有编程语言中最容易上手,最容易学习的编程脚本语言。本章向读者介绍Shell编程入门、Shell编程变量、If、While、For、Case......
  • [转]Windows下编写的shell脚本,传到Linux执行出现bad interpreter:No such file or di
    原文地址:badinterpreter:Nosuchfileordirectory解决方法-jprothwell-博客园在Linux中执行.sh脚本,异常/bin/sh^M:badinterpreter:No such file or directory。分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执......
  • Shell并发执行
    在Shell脚本中,实现并发执行可以显著提高处理效率,特别是在处理大量任务或需要同时执行多个命令时。以下是一些常见的方法来实现Shell并发执行:1.使用&符号通过在命令末尾添加&符号,可以将命令放到后台运行,从而实现并发执行#!/bin/bashcommand1&command2&这种方法简单易用,......
  • 在 PowerShell 中,执行 ipconfig /flushdns 是清除本地 DNS 缓存的标准方式。PowerShel
    在PowerShell中,执行ipconfig/flushdns是清除本地DNS缓存的标准方式。如果你希望在PowerShell脚本中实时清理DNS缓存,你可以直接执行ipconfig/flushdns命令,并输出一些提示信息来确认操作已完成。PowerShell实时清理DNS缓存代码:powershellCopyCode#执行ipconf......