передавать переменные среды в службы, запущенные с помощью systemctl

У меня есть служба nodeJS, построенная с использованием NodeJs. Для этой службы требуется передать некоторые переменные среды. Кроме того, я создал файл systemd для его запуска из systemctl. По некоторым странным причинам служба, при запуске с помощью systemctl, не считывает переменные среды. Например, одна переменная среды - это HOST, которая содержит IP-адрес, к которому будет привязано приложение парусов. Однако, если я запускаю службу с помощью подъема парусов или узла app.js, он считывает переменные среды. Вот файл юнита:

[Unit] Description=project [Service] ExecStart=/usr/bin/node /mnt/project/app.js Restart=always StandardOutput=syslog [Install] WantedBy=multi-user.target

Я пробовал все. Я добавил переменные среды в / etc / environment и указал на него файл блока, я также добавил их в файл блока, но ничего не получилось.

3
задан 28 July 2017 в 17:12

2 ответа

Это происходит потому, что блок в systemd инкапсулирован из остальной части системы. Вы пытались установить его прямо в файле блока следующим образом:

Environment = "FOO = foo" 'BAR = bar'

Затем переменные FOO и BAR доступны в вашем устройстве , Например, если это мой ExecuteStart:

Environment = "FOO = foo" 'BAR = bar'

ExecStart = / bin / echo $ FOO $ {FOO} $ {BAR}

foo foo bar

С опцией Environment сверху это приведет к следующему результату:

Альтернатива делайте это через файл конфигурации среды. Для этого вы можете прочитать документацию по Fedora:

http://fedoraproject.org/wiki/Packaging:Systemd#EnvironmentFiles_and_support_for_.2Fetc.2Fsysconfig_files

Эта ссылка содержит некоторые полезные примеры с докере :

3
ответ дан 18 July 2018 в 09:30

Это происходит потому, что блок в systemd инкапсулирован из остальной части системы. Вы пытались установить его прямо в файле блока следующим образом:

Environment = "FOO = foo" 'BAR = bar'

Затем переменные FOO и BAR доступны в вашем устройстве , Например, если это мой ExecuteStart:

Environment = "FOO = foo" 'BAR = bar'

ExecStart = / bin / echo $ FOO $ {FOO} $ {BAR}

foo foo bar

С опцией Environment сверху это приведет к следующему результату:

Альтернатива делайте это через файл конфигурации среды. Для этого вы можете прочитать документацию по Fedora:

http://fedoraproject.org/wiki/Packaging:Systemd#EnvironmentFiles_and_support_for_.2Fetc.2Fsysconfig_files

Эта ссылка содержит некоторые полезные примеры с докере :

3
ответ дан 24 July 2018 в 19:21

Другие вопросы по тегам:

Похожие вопросы: