oli*_*oil 2 apache supervisord docker coreos
我正在使用 CoreOS 运行 Docker 容器,它使用最新的 Debian 作为基础,并安装了各种软件包,包括主管和 apache2。我可以使用以下命令启动并成功运行 apache:
# /usr/bin/pidproxy /var/run/apache2.pid /bin/bash -c "source /etc/apache2/envvars && /usr/sbin/apache2 -DFOREGROUND -k start"
Run Code Online (Sandbox Code Playgroud)
但是,当我将此命令粘贴到主管配置文件中时:
[program:apache2]
command=/usr/bin/pidproxy /var/run/apache2.pid /bin/bash -c "source /etc/apache2/envvars && /usr/sbin/apache2 -DFOREGROUND -k start"
redirect_stderr=true
Run Code Online (Sandbox Code Playgroud)
并执行以下操作:
# supervisorctl start apache2
Run Code Online (Sandbox Code Playgroud)
我得到这样的回复:
apache2: ERROR (abnormal termination)
Run Code Online (Sandbox Code Playgroud)
查看主管进程日志文件,我看到 apache2 命令的帮助输出,就好像它是这样调用的apache2 -h。我不知道为什么在命令行上以 root 身份执行(ssh 进入容器)时运行的命令在由supervisorctl 逐字执行(以 root 身份运行)时不起作用。
任何正确方向的观点都将不胜感激。
小智 5
你真的想用这个。如果你不使用 pidproxy,asupervisorctl stop apache不会杀死它的所有子进程。
这也将确保容器在收到 SIGTERM 时退出,而不是等待 SIGKILL。
[program:apache]
command=/usr/bin/pidproxy /var/run/apache2/apache2.pid /bin/bash -c "/usr/sbin/apache2ctl -D FOREGROUND"
autorestart=true
Run Code Online (Sandbox Code Playgroud)