nginx docker官方镜像添加自定义命令自动退出方式
nginx docker官方镜像添加自定义启动命令自动退出
今天在启动nginx官方镜像的时候想在启动后执行一些CMD命令,但发现每次执行完CMD命令后镜像会自动退出,在网上查找后发现:
If you add a custom CMD in the Dockerfile, be sure to include -g daemon off; in the CMD in order for nginx to stay in the foreground, so that Docker can track the process properly (otherwise your container will stop immediately after starting)!
译文:
如果你再Dockerfile中添加了一条自定义的CMD命令,为了使nginx保持在前台运行请确定CMD命令中包含参数 -g daemon off; ,这样Docker才能正确的跟踪进程(否则你的容器回在启动后立即停止)
再从docker的运行机制来说明:
docker判断容器是否运行的依据是容器内pid(进程号)为1的进程是否结束,一旦pid=1的进程结束后容器也会随之退出。
在未添加自定义的CMD命令时,nginx容器中pid=1的进程是nginx,而添加了CMD命令后,这条自定义的CMD命令的pid变成了1,而nginx进程转为守护线程的方式来执行,当自定义的CMD命令执行结束后,容器便会随之退出!
解决方法
添加全局参数 -g ‘daemon off’;
解释:
设置nginx不以守护线程的方式运行,这样nginx始终保持进程号pid=1,这样容器就会随着nginx一直运行下去。
示例:
- dockerfile
FROM nginx:latest CMD echo "hello" && exec nginx -g 'daemon off;'
- 命令行
docker run -itd nginx:latest /bin/bash echo "hello" && exec nginx -g 'daemon of f;'
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Windows环境下Nginx 服务器 SSL 证书安装部署操作过程
这篇文章主要介绍了Windows环境下Nginx 服务器 SSL 证书安装部署,指导您如何在Windows Nginx 服务器中安装 SSL 证书,本文给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2022-10-10
Nginx 1.28.0 源码编译安装与自定义网页部署详细指南
本文介绍了Nginx1.28.0的安装过程,提供了自定义HTML文件部署步骤、安装后核心目录说明、常用管理命令、部署前端项目示例等内容,感兴趣的朋友跟随小编一起看看吧2026-05-05
nginx反向代理https内部定向到http报302的问题及解决
这篇文章主要介绍了nginx反向代理https内部定向到http报302的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12


最新评论