Большинство вопросов, связанных с /dev/tty
и докером, сосредоточены вокруг docker run
.
У меня есть агент мониторинга (в частности, newrelic-nr-agent
), который должен оставаться на переднем плане, чтобы позволить foreman
управлять им. Когда скрипт вызывается после сборки и запуска контейнера, все в порядке. Было бы лучше запустить агент на этапе docker-compose up
(именно так запускаются мои контейнеры) и не нужно входить в работающий контейнер для запуска агента.
Я не могу обязательно исправить скрипт, потому что он установлен из репозитория New Relic apt.
Я просмотрел сбой сборки, потому что /dev/tty
не доступно, но это не решает мою проблему. Образ создается успешно, но не запускается из-за сбоя агента мониторинга.
Соответствующая строка в моем Procfile:
nginx-nr-agent: /usr/bin/nginx-nr-agent.py -f start
И в докерфайле:
# 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