主管无法运行docker-compose up命令

时间:2017-08-15 14:40:17

标签: docker-compose supervisord supervisor supervised-learning

我试图使用主管监控多个docker进程,但我已尽力而为但没有结果。由于某种原因,主管总是说它找不到命令docker-compose。我已经指出了我的机器上的docker-compose的箱子,但是,它仍然无法工作,如果有人可以提供帮助,我将不胜感激。 这是我的supervisord.conf文件

; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
;
; Note: shell expansion ("~" or "$HOME") is not supported.  Environment
; variables can be expanded using this syntax: "%(ENV_HOME)s".

[unix_http_server]
file=/tmp/supervisor.sock   ; (the path to the socket file)
chmod=0700                 ; socket file mode (default 0700)


[supervisorctl]
serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL  for a unix socket
serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
username=socialhub              ; (default is no username (open server))
password=socialhub              ; (default is no password (open server))

[inet_http_server]          ; inet (TCP) server disabled by default
port=127.0.0.1:9001         ; (ip_address:port specifier, *:port for all iface)
username=socialhub              ; (default is no username (open server))
password=socialhub              ; (default is no password (open server))

[supervisord]
logfile=supervisord/supervisord.log     ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=0              ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10                  ; (num of main logfile rotation backups;default 10)
loglevel=info                       ; (log level;default info; others: debug,warn,trace)
pidfile=supervisord/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false                      ; (start in foreground if true;default false)
minfds=1024                         ; (min. avail startup file descriptors;default 1024)
minprocs=200                        ; (min. avail process descriptors;default 200)
nocleanup=false                     ; (don't clean up tempfiles at start;default false)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface


; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.

[program:mongo]
command=/usr/local/bin/docker-compose up mongodb    ; the program (relative uses PATH, can take args)
process_name=%(program_name)s               ; process_name expr (default %(program_name)s)
numprocs=1                                  ; number of processes copies to start (def 1)
directory=supervisord                           ; directory to cwd to before exec (def no cwd)
priority=1000                               ; the relative start priority (default 999)
autostart=true                              ; start at supervisord start (default: true)
autorestart=unexpected                      ; whether/when to restart (default: unexpected)
startsecs=60                                ; number of secs prog must stay running (def. 1)
startretries=5                              ; max # of serial start failures (default 3)
;exitcodes=0,2                              ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT                             ; signal used to kill process (default TERM)
stopwaitsecs=1                              ; max num secs to wait b4 SIGKILL (default 10)
stopasgroup=false                           ; send stop signal to the UNIX process group (default false)
killasgroup=false                           ; SIGKILL the UNIX process group (def false)
stdout_logfile=supervisord/                 ; stdout log path, NONE for none; default AUTO
stdout_logfile_maxbytes=0                   ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile=supervisord/                 ; stderr log path, NONE for none; default AUTO
stderr_logfile_maxbytes=10MB                ; max # logfile bytes b4 rotation (default 50MB)
stderr_logfile_backups=5                    ; # of stderr logfile backups (default 10)
stderr_events_enabled=true                  ; emit events on stderr writes (default false)


; The below sample eventlistener section shows all possible
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.

[eventlistener:process_fail]
command=/usr/local/bin/docker-compose rm -f     ; the program (relative uses PATH, can take args)
process_name=%(program_name)s       ; process_name expr (default %(program_name)s)
numprocs=1                          ; number of processes copies to start (def 1)
events=PROCESS_LOG_STDERR               ; event notif. types to subscribe to (req'd)
buffer_size=10                      ; event buffer queue size (default 10)
directory=supervisord/                  ; directory to cwd to before exec (def no cwd)
priority=-1                         ; the relative start priority (default -1)
autostart=true                      ; start at supervisord start (default: true)
autorestart=unexpected              ; whether/when to restart (default: unexpected)
startsecs=1                         ; number of secs prog must stay running (def. 1)
startretries=3                      ; max # of serial start failures (default 3)
exitcodes=0,2                       ; 'expected' exit codes for process (default 0,2)
stopsignal=QUIT                     ; signal used to kill process (default TERM)
stopwaitsecs=1                      ; max num secs to wait b4 SIGKILL (default 10)
stopasgroup=false                   ; send stop signal to the UNIX process group (default false)
killasgroup=false                   ; SIGKILL the UNIX process group (def false)
;user=chrism                        ; setuid to this UNIX account to run the program
redirect_stderr=false               ; redirect proc stderr to stdout (default false)
stdout_logfile=NONE             ; stdout log path, NONE for none; default AUTO

1 个答案:

答案 0 :(得分:1)

您使用的目录不正确

directory=supervisord   

您应该使用docker-compose.yml文件所在目录的完整路径。

修改 - 1:

所以我不得不为你提出更深入的问题。在版本3.0b2之前,命令空间无法正确传递。

如果升级到3.0.1或更高版本,带空格的命令可以正常工作。在您的版本中,它充分利用了命令并尝试将其定位为文件,我们为什么会看到command not found错误

您可以使用pip

轻松升级到最新版主管
pip install supervisor==3.3.3

如果由于某种原因无法升级您的主管(我强烈建议他们最近有XML-RPC漏洞允许命令执行),那么您需要创建一个shell脚本

<强> start_mongo.sh

#!/bin/bash
cd /home/user/socialhub/
exec docker-compose up

确保chmod +x start_mongo.sh并将命令更改为/path/to/start_mongo.sh