关于云效一台服务器挂不同端口RDC脚本部署java项目的坑,执行不到aplication.properties文件

本文揭示了在SpringBoot项目中,应用properties文件位置不当可能导致的端口配置错误。详细解析了在不同环境中(如日常环境与预发环境)应用properties被误读的问题,并提供了解决方案,即在启动脚本中加入目录切换命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要点:

流水线环节执行start脚本是在linux的根目录执行,如果根目录没有aplication.properties,就会根本加载不到aplication.properties文件,所以无论你如何修改外部的aplication.properties来配置项目的部署情况,也是加载jar包内的aplication.properties。

解决办法:

在你启动的shell脚本中,先执行命令进入aplication.properties所在的目录,在执行 java -jar 命令 就ok。

比如 下面这个start.sh脚本示例

 

#!/bin/sh

cd   /www/wwwroot/myproject
java -jar /www/wwwroot/myproject/myweb.jar  &  #注意:必须有&让其后台执行,否则没有pid生成

 

还有个stop.sh脚本

 

#!/bin/sh
kill `lsof -t -i:你的程序端口号`

 

 

 

说说我的经历。

我想把我的spring boot框架的java项目部署到云效。项目里面的application.properties配置的7777端口,根据优先级,jar包外的application.properties会覆盖里面的application.properties的配置项。

日常环境中我的外面的.properties我配置项目挂在7777端口

预发环境中我的外面的.properties我配置项目挂在7778端口

 

坑来了。

这是我的日常环境启动脚本  路径是:/www/wwwroot/dachuang/start.sh

这是我日常环境的部署配置。

这里已经出现了坑的隐患。我设置的日常环境的.properties也是7777端口,所以当我访问项目正常时,我以为是正常的加载了.properties配置文件。

这是我的预发环境启动脚本  路径是:/www/wwwroot/dachuangpre/start.sh

这是我预发环境的部署配置。

当流水线走到预发环节,也执行成功了,环节的执行成功并不会判断你的服务是不是成功启动,环节只管是不是成功启动了脚本。实际上预发环境的脚本是执行了的,但问题是,实际上启动start.sh脚本的时候并没有加载到.properties配置文件,所以默认是加载jar包里的.properties配置文件7777端口,之前的日常环境已部署在了7777端口,所以端口冲突。此时,尽管预发环节显示部署成功,但是实际预发环境的项目是没有跑起来的。

所以就有个错觉,明明配置都一样,只不过用application.properties配置个不同的端口怎么会日常环境项目能通过7777端口访问,而预发环境确不能通过7778端口访问。

于是我猜是不是预发环境执行不到start脚本,所以导致挂在7778的项目不能访问(真是愚蠢至极啊,明明人家预发日志里面都写了脚本执行成功了)

后来经过种种苦寻解决方法(云效的资料真的太少了!!!)

终于寻得解决之道,就是在脚本执行java -jar 前加 cd application.properties对应的目录,完美解决!

 

真不容易啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值