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

猜你喜欢

转载自www.cnblogs.com/weisunblog/p/12237696.html