微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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访问信息

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐