在docker container启动期间将后台进程附加到foreman的Procfile中的/ dev / tty

时间:2016-02-25 18:21:49

标签: nginx newrelic dockerfile foreman

涉及/dev/tty和泊坞窗的大多数问题都围绕docker run

我有一个监控代理(具体而言,newrelic-nr-agent)必须保留在前台才能让foreman对其进行管理。在容器构建和启动后调用脚本时,一切都很好。最好在docker-compose up阶段(这是我的容器启动的方式)启动代理,而不需要输入正在运行的容器来启动代理。

我不一定能修补脚本,因为它是从New Relic apt repo安装的。

我看过build fails because /dev/tty isn't available,但这并没有解决我的问题。图像构建成功但由于监视代理程序失败而无法启动。

我的Procfile中的相关行:

nginx-nr-agent: /usr/bin/nginx-nr-agent.py -f start

在Dockerfile中:

# ENV TERM vt100 ENV TERM tty

我已经单独尝试了两个设置没有设置。没有任何设置工作。

工头的错误:

app_1 | 17:26:36 nginx-nr-agent.1 | Traceback (most recent call last): app_1 | 17:26:36 nginx-nr-agent.1 | File "/usr/bin/nginx-nr-agent.py", line 610, in <module> app_1 | 17:26:36 nginx-nr-agent.1 | main() app_1 | 17:26:36 nginx-nr-agent.1 | File "/usr/bin/nginx-nr-agent.py", line 583, in main app_1 | 17:26:36 nginx-nr-agent.1 | daemon_runner = MyDaemonRunner(app) app_1 | 17:26:36 nginx-nr-agent.1 | File "/usr/bin/nginx-nr-agent.py", line 521, in __init__ app_1 | 17:26:36 nginx-nr-agent.1 | runner.DaemonRunner.__init__(self, app) app_1 | 17:26:36 nginx-nr-agent.1 | File "/usr/lib/python2.7/dist-packages/daemon/runner.py", line 80, in __init__ app_1 | 17:26:36 nginx-nr-agent.1 | self.daemon_context.stdout = open(app.stdout_path, 'w+') app_1 | 17:26:36 nginx-nr-agent.1 | IOError: [Errno 6] No such device or address: '/dev/tty' app_1 | 17:26:36 nginx-nr-agent.1 | exited with code 1

1 个答案:

答案 0 :(得分:2)

对于子孙后代,解决方案:

在Dockerfile中:

ENV TERM tty

在docker-compose.yml:

tty: true

在Procfile中:

nginx-nr-agent: /usr/bin/nginx-nr-agent.py -f start

docker-compose.yml中的tty: true是缺失的部分!