supervisord - stop - programa supervisor: x comando expansión de variables de entorno $(ENV_VAR) s?
supervisord stop (2)
Estoy de acuerdo en que el supervisor no tiene claro esto (al menos para mí).
He encontrado la solución más fácil de ejecutar / bin / bash -c. En tu caso sería:
command=/bin/bash -c"/path/to/myprog/myservice /data/myprog/${SITE}/${SITE}.db ..."
¿Qué piensas?
He encontrado inspiración aquí: http://blog.trifork.com/2014/03/11/using-supervisor-with-docker-to-manage-processes-supporting-image-inheritance/
Me gustaría poner la configuración (en este caso, el nombre del sitio) en las variables de entorno del supervisor, para la expansión en el programa: x argumentos de comando. ¿Esto es compatible? La redacción de la documentación parece indicar que sí.
La siguiente sintaxis no me funciona en supervisor-3.0 (extracto del archivo de configuración):
[supervisord]
environment = SITE="mysite"
[program:service_name]
command=/path/to/myprog/myservice /data/myprog/%(ENV_SITE)s/%(ENV_SITE)s.db %(program_name)s_%(process_num)03d
process_name=%(program_name)s_%(process_num)03d
numprocs=5
numprocs_start=1
Plantea el siguiente error:
sudo supervisord -c supervisord.conf
Error: Format string
''/path/to/myprog/myservice /data/myprog/%(ENV_SITE)s/%(ENV_SITE)s.db %(program_name)s_%(process_num)03d''
for ''command'' contains names which cannot be expanded
Al leer la documentación, esperaba que las variables de entorno estuvieran disponibles para la expansión en el programa: x comando como% (ENV_VAR) s:
http://supervisord.org/configuration.html#program-x-section-values
mando:
"Las expresiones de cadena se evalúan comparándolas con un diccionario que contiene las claves group_name, host_node_name, process_num, program_name, aquí (el directorio del archivo de configuración de supervisor) y todas las variables de entorno de supervisor con el prefijo ENV_".
Introducido: 3.0
Relacionado:
Hay solicitudes de extracción abiertas para habilitar la expansión en valores de sección adicionales:
https://github.com/Supervisor/supervisor/issues?labels=expansions&page=1&state=open
Una búsqueda de goole (o SO) no devuelve ejemplos de intentos de usar la expansión de% (ENV_VAR) en el valor de la sección de comando:
https://www.google.com/search?q=supervisord+environment+expansion+in+command
Usted lo está haciendo bien; sin embargo, el ENV definido en su sección de supervisión no se pone a disposición de los procesos por cualquier motivo durante la carga de la configuración. Si empiezas a supervisar así:
SITE=mysite supervisord
Se ejecutará correctamente y expandirá esa variable. No sé por qué supervisord tiene problemas para agregar al entorno y ponerlo a disposición de la expansión de configuración de los subprocesos. Creo que la variable de entorno está disponible dentro del subproceso, pero no cuando se expanden las variables en la declaración de configuración del subproceso.