【发布时间】: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