Dockerfile构建nginx镜像
- 编写安装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容器也就退出了。
-
- /usr/local/nginx/sbin/nginx 使用前台方式永久运行:/usr/local/nginx/sbin/nginx -g "daemon off;"
- 检查验证
-
- docker run -itd -p 80:80 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"
- 访问宿主机80端口即可看到nginx访问信息