如何在不停止的情况下在 Docker 容器中运行 Nginx?

新手上路,请多包涵

我在 Docker 容器上安装了 Nginx,并尝试像这样运行它:

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

问题在于 Nginx 的工作方式是初始进程立即生成一个主 Nginx 进程和一些工作人员,然后退出。由于 Docker 只监视原始命令的 PID,因此容器会停止。

如何防止容器停止?我需要能够告诉它绑定到第一个子进程,或者阻止 Nginx 的初始进程退出。

原文由 Seldo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 524
2 个回答

nginx 像所有表现良好的程序一样,可以配置为不进行自我守护。

使用 http://wiki.nginx.org/CoreModule 中描述的 daemon off 配置指令。

原文由 Charles Duffy 发布,翻译遵循 CC BY-SA 3.0 许可协议

为了扩展 Charles Duffy 的答案,Nginx 使用 daemon off 指令在前台运行。如果不方便放在配置文件中,我们可以直接在命令行中指定。这使得在调试模式(前台)运行并通过更改命令行参数直接切换到在生产模式(后台)运行变得容易。

在前台运行:

 nginx -g 'daemon off;'

在后台运行:

 nginx

原文由 johntellsall 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题