Ребята,
Я пытаюсь переместить что-то в контейнер докера, что означает переход от его запуска в качестве демона к автономному процессу, управляемому супервизором. Сейчас у меня нет большого опыта работы с супервизором, поэтому, вероятно, это простая ошибка конфигурации с моей стороны.
Проблема связана с тем, что для этого приложения требуется набор определенных переменных среды. При запуске в качестве демона я бы установил их с помощью сценария 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"