Как запустить Nginx в контейнере Docker без остановки?
У меня есть Nginx, установленный на контейнере Docker, и я пытаюсь запустить его следующим образом:
docker run -i -t -p 80:80 mydockerimage /usr/sbin/nginx
проблема в том, что способ работы Nginx заключается в том, что начальный процесс немедленно порождает главный процесс Nginx и некоторых рабочих, а затем завершает работу. Поскольку Docker наблюдает только за PID исходной команды, контейнер затем останавливается.
Как предотвратить остановку контейнера? Мне нужно быть в состоянии сказать ему, чтобы привязать к первому дочернему процессу или остановить Nginx начальный процесс от выхода.
6 ответов:
nginx
, как и все хорошо себя ведущие программы, можно настроить не на само-демонизацию.использовать
daemon off
директива конфигурации, описанная в http://wiki.nginx.org/CoreModule.
расширить ответ, вы также можете использовать
Dockerfile
CMD
команда, как показано ниже (в случае, если вы хотите, чтобы он самостоятельно начать без дополнительных аргументов)CMD ["nginx", "-g", "daemon off;"]
здесь у вас есть пример Dockerfile, который запускает nginx. Как упоминалось Чарльзом, он использует
daemon off
конфигурация:https://github.com/darron/docker-nginx-php5/blob/master/Dockerfile#L17
добавление этой команды в Dockerfile может отключить его:
RUN echo "daemon off;" >> /etc/nginx/nginx.conf