Я нашел обходной путь. Запуск nginx
косвенно с ENTRYPOINT ["/usr/local/bin/start.sh"]
работает, когда start.sh
выглядит следующим образом:
#!/bin/bash
nginx
sleep infinity
Странно, но этот вызов nginx
внутри start.sh
по-прежнему выдает те же сообщения об ошибках, но поскольку за ним следует sleep infinity
, сценарий ENTRYPOINT
теперь может завершиться успешно. Только если я вообще не вызываю nginx
, сообщения об ошибках исчезают, но затем Nginx также не запускается. Действительно странно.
Кстати, я использую версию Debian nginx
и настраиваю директиву user
в /etc/nginx/nginx.conf
в Dockerfile
, а также несколько разрешений для каталогов для удовлетворения требований OpenShift (где образы контейнеров не запускаются как root
но как случайные идентификаторы).
ОБНОВЛЕНИЕ Основная причина оказалась ошибкой, из-за которой один и тот же экземпляр контейнера дважды запускался внутри модуля. Это (конечно, задним числом) привело к тому, что один и тот же сервер запускался дважды на одном и том же узле и, следовательно, к сообщению об ошибке связывания во «втором» контейнере. До сих пор я всегда наблюдал только «второй» контейнер и поэтому столкнулся с ошибкой. После устранения проблемы ENTRYPOINT ["nginx", "-g", "daemon off;"]
теперь также работает.