【问题标题】:Spring not seen environment variables from systemd serviceSpring没有看到来自systemd服务的环境变量
【发布时间】:2019-10-13 05:59:33
【问题描述】:

我正在尝试使用 ubuntu 的 systemd 服务运行 spring boot 应用程序。 在我的服务文件中,我有 ExecStart 变量

ExecStart=/bla/run.sh

还有变量:

Environment="DB_HOSTNAME=ip"
Environment="DB_PORT=5432"
...

(我尝试了两种变体:带和不带大括号)

我的 sh 文件看起来像:

#!/bin/sh

echo jdbc:postgresql://${DB_HOSTNAME}:${DB_PORT}/${DB_NAME}
sudo /usr/bin/java -jar bla.jar

内部 sh 变量也是可用的,但 spring 应用程序不处理它们。与活动配置文件变量相同。

我认为问题在于变量的范围,我试图将它们从主变量传递给另一个 sh。但是在另一个脚本中它们是可用的,所以只有 spring 应用程序才有问题。

更新 导出技巧无济于事

【问题讨论】:

  • 您的 SpringBoot 应用似乎无法解析占位符,因为它们仅在父进程范围内。尝试导出它们(Environment="export DB_HOSTNAME=ip")并运行您的应用程序。它应该可以工作。

标签: java linux spring spring-boot systemd


【解决方案1】:

也许它会对某人有所帮助。 主要问题是使用 sudo 启动 java 应用程序。 删除 sudo 后变量变为可用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2012-05-19
    相关资源
    最近更新 更多