Dockerfile构建nginx镜像以及使用nginx -g "daemon off;"方式前台运行

  • 编写安装Nginx的shell脚本
    • #!/bin/bash
      yum install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel
      cd /usr/local/Nginx-1.16.0
      ./configure --prefix=/usr/local/Nginx && make && make install
  • dockerfile
    •  FROM  centos:7
      ADD Nginx-1.16.0.tar.gz /usr/local
      copY Nginx_install.sh /usr/local
      RUN sh /usr/local/Nginx_install.sh
      EXPOSE 80
  • 制作Nginx镜像
    • docker build -t mycentos:Nginx .
  • Nginx镜像启动注意
    • 在容器里Nginx是以daemon方式启动,退出容器时,Nginx程序也会随着停止
    • /usr/local/Nginx/sbin/Nginx 使用前台方式永久运行:/usr/local/Nginx/sbin/Nginx -g "daemon off;"
      • Docker 容器启动时,认会把容器内部第一个进程,也就是pid=1的程序,作为docker容器是否正在运行的依据,如果 docker 容器pid=1的进程挂了,那么docker容器便会直接退出。
        
        Docker未执行自定义的CMD之前,Nginx的pid是1,执行到CMD之后,Nginx就在后台运行,bash或sh脚本的pid变成了1。
        
        所以一旦执行完自定义CMD,Nginx容器也就退出了。
  • 检查验证
    • docker run -itd -p 80:80 mycentos:Nginx /usr/local/Nginx/sbin/Nginx -g "daemon off;"
  • 访问宿主机80端口即可看到Nginx访问信息

 

相关文章

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一...
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改l...
nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看...
一 、此次漏洞分析 1 nginx HTTP/2漏洞 [nginx-announce] ng...
###进入nginx 目录cd /usr/local/nginx###递归显示 2 级目录...
在cmd命令窗口输入下面命令进行查看 tasklist /fi "ima...