У меня есть простое приложение весенней загрузки, которое возвращает значение системной переменной env
application.properties
my-var=${SYSTEM_ENV_VAR}
где SYSTEM_ENV_VAR
- системная переменная, определенная в /etc/environment
DemoApp.java
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Value("${my-var}")
String env;
@GetMapping(path = "/")
public String get() {
return "This: " + env;
}
}
Я слежу за процессом создания исполняемого фляги с mvn clean package
Теперь, когда я выполняю jar как /home/ubuntu/sample-app/target/demo-0.0.1-SNAPSHOT.jar
, я получаю правильное значение моей системной переменной среды
Я создал сервис
/ и т.д. / Systemd / система / demoapp.service
[Unit]
Description=desc
After=syslog.target
[Service]
EnvironmentFile=-/etc/environment
User=root
ExecStart=/home/ubuntu/sample-app/target/demo-0.0.1-SNAPSHOT.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Я выполняю услугу как sudo systemctl start demoapp.service
.
Когда я проверяю статус sudo systemctl status demoapp.service
, я вижу трассировку ошибки
Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder
'SYSTEM_ENV_VAR' in value "${SYSTEM_ENV_VAR}"
Но я знаю, что /etc/environment
загружается, так как я вижу другие записи в журнале, которые показывают загрузку всех моих системных envs
Может ли кто-нибудь помочь мне с этим? Спасибо.