Назад | Перейти на главную страницу

Переменные среды настроек супервизора и получение сообщения об ошибке: неожиданный конец пар ключ / значение

Ребята,

Я пытаюсь переместить что-то в контейнер докера, что означает переход от его запуска в качестве демона к автономному процессу, управляемому супервизором. Сейчас у меня нет большого опыта работы с супервизором, поэтому, вероятно, это простая ошибка конфигурации с моей стороны.

Проблема связана с тем, что для этого приложения требуется набор определенных переменных среды. При запуске в качестве демона я бы установил их с помощью сценария bash

#!/bin/bash
ORACLE_HOME=/home/oracle/app/
TNS_ADMIN=/home/oracle/app/network/admin
export ORACLE_HOME TNS_ADMIN
export LD_LIBRARY_PATH=$PATH:/home/oracle/app/lib
ncftpd_authd

В supervisord.conf я установил его как

[program:authd]
environment=ORACLE_HOME="/home/oracle/app/",TNS_ADMIN="/home/oracle/app/network/admin",export ORACLE_HOME TNS_ADMIN,export LD_LIBRARY_PATH="$PATH:/home/oracle/app/lib"
command=/usr/local/sbin/ncftpd_authd
stdout_events_enabled=true
stderr_events_enabled=true

Однако, если я вызываю supervisord -c /etc/supervisord.conf, я получаю сообщение об ошибке

[root@0d7f9a5d7c3a src]# supervisord -c /etc/supervisord.conf 
Error: Unexpected end of key/value pairs

Я считаю, что это связано со строкой среды, как если бы я прокомментировал, что запустится out supervisord (но authd не запустится). Что я делаю не так, настраивая среду в файле конфигурации supervisord?

environment должен быть список пар ключ / значение, что означает, что он не должен содержать export. Правильное значение будет:

environment=ORACLE_HOME="/home/oracle/app/",TNS_ADMIN="/home/oracle/app/network/admin",LD_LIBRARY_PATH="$PATH:/home/oracle/app/lib"

Вам также может потребоваться заменить $PATH по его стоимости. Или вы можете следовать стандарту записи переменных извне в http://supervisord.org/configuration.html?highlight=environment. Короче говоря, чтобы использовать $PATH, просто пиши %(ENV_PATH)s. Тогда это будет так:

environment=ORACLE_HOME="/home/oracle/app/",TNS_ADMIN="/home/oracle/app/network/admin",LD_LIBRARY_PATH="%(ENV_PATH)s:/home/oracle/app/lib"