涉及/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
答案 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
是缺失的部分!