run que hub ejecutar dockers detener desde contenedor container compose cero linux nginx docker

linux - que - ejecutar contenedor docker



¿Cómo ejecutar Nginx dentro de un contenedor Docker sin detenerse? (6)

Tengo Nginx instalado en un contenedor Docker, y estoy tratando de ejecutarlo así:

docker run -i -t -p 80:80 mydockerimage /usr/sbin/nginx

El problema es que la forma en que funciona Nginx es que el proceso inicial genera de inmediato un proceso maestro de Nginx y algunos trabajadores, y luego se cierra. Como Docker solo está mirando el PID del comando original, el contenedor se detiene.

¿Cómo evito que el contenedor se detenga? Necesito poder decirle que se vincule al primer proceso hijo, o detener el proceso inicial de Nginx.


Agregar este comando a Dockerfile puede deshabilitarlo:

RUN echo "daemon off;" >> /etc/nginx/nginx.conf



Para ampliar la respuesta de Charles Duffy, Nginx usa la directiva daemon off para correr en primer plano. Si no es conveniente colocar esto en el archivo de configuración, podemos especificarlo directamente en la línea de comando. Esto facilita la ejecución en modo de depuración (primer plano) y cambia directamente a la ejecución en modo de producción (fondo) cambiando los argumentos de línea de comando.

Para ejecutar en primer plano:

nginx -g ''daemon off;''

Para ejecutar en segundo plano:

nginx


Para ampliar la respuesta de John, también puede usar el comando Dockerfile CMD siguiente manera (en caso de que desee que se inicie automáticamente sin argumentos adicionales)

CMD ["nginx", "-g", "daemon off;"]



nginx , como todos los programas de buen comportamiento, se puede configurar para no autodefectarse.

Use la directiva de configuración de daemon off descrita en http://wiki.nginx.org/CoreModule .