根底镜像 : debian:buster-slim

nginx : 1.16.1

nginx tar包自行网上下载

# 第一行先定义根底镜像,示意以后镜像文件是基于哪个进行编辑的.FROM debian:buster-slim# 指定镜像维护者的信息.MAINTAINER @Owen 975706304@qq.com# 先备份原源配置文件RUN cp /etc/apt/sources.list /etc/apt/sources.list.bak# 而后将debian的apt源改成中科大源RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.listRUN sed -i 's|security.debian.org/debian-security|mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.listRUN apt clean && apt update -y# 初始版的nginx须要的依赖:gcc zlib1g zlib1g-dev openssl libssl-dev libpcre3 libpcre3-dev# libgd-dev和libexif-dev为ngx_http_image_filter_module须要的依赖RUN apt -y install gccRUN apt -y install zlib1g zlib1g-devRUN apt -y install openssl libssl-devRUN apt -y install libpcre3 libpcre3-devRUN apt -y install libgd-devRUN apt -y install libexif-devRUN apt -y install make# 将dockerfile上下文目录中的ngx_http_image_filter_module.tar.gz文件拷贝进容器根目录并解压COPY ngx_http_image_filter_module.tar.gz /ngx_http_image_filter_module.tar.gzRUN tar zxf ngx_http_image_filter_module.tar.gz# 将dockerfile上下文目录中的nginx-1.16.1.tar.gz文件拷贝进容器根目录并解压COPY nginx-1.16.1.tar.gz /nginx-1.16.1.tar.gzRUN tar zxf nginx-1.16.1.tar.gz# 创立nginx用户,yum形式装置无需做此步骤,因为默认yum装置会主动创立nginx用户# 咱们上面命令以nginx用户运行,因而咱们须要在容器中创立nginx用户# -M(不创立主目录) -s(不容许登录)RUN useradd -M -s /sbin/nologin nginx# 切换至nginx目录WORKDIR /nginx-1.16.1# 编译装置nginx# --with-http_stub_status_module -> Nginx性能统计模块# --with-http_ssl_module -> ssl加密模块# --add-module=/ngx_http_image_filter_module -> 图片裁剪模块RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--sbin-path=/usr/local/nginx/sbin/nginx \--modules-path=/usr/local/nginx/modules \--conf-path=/usr/local/nginx/conf/nginx.conf \--error-log-path=/usr/local/nginx/logs/error.log \--http-log-path=/usr/local/nginx/logs/access.log \--pid-path=/usr/local/nginx/logs/nginx.pid \--lock-path=/usr/local/nginx/logs/nginx.lock \--with-http_stub_status_module \--with-http_ssl_module \--add-module=/ngx_http_image_filter_moduleRUN make && make install# 将access.log日志重定向到docker的规范输入# 将error.log日志重定向到docker的规范谬误,这样docker logs 的时候就能够看到日志了# ln -sf a b 示意 b链接向aRUN ln -sf /dev/stdout /usr/local/nginx/logs/access.log && ln -sf /dev/stderr /usr/local/nginx/logs/error.logRUN mkdir -p /usr/local/nginx/conf.dWORKDIR /# 删除装置应用的文件和文件夹RUN rm -rf ngx_http_image_filter_module.tar.gzRUN rm -rf nginx-1.16.1.tar.gzRUN rm -rf ngx_http_image_filter_moduleRUN rm -rf nginx-1.16.1# 定义向外裸露的端口号,多个端口用空格做距离,启动容器时便于应用-p将此端口向宿主机端口映射EXPOSE 80/tcp 443/tcp# 解释 -> '-g' 'daemon off'# nginx默认是当前台模式启动的,Docker未执行自定义的CMD之前,nginx的pid是1,# 执行到CMD之后,nginx就在后盾运行,bash或sh脚本的pid变成了1,# 所以一旦执行完自定义CMD,nginx容器也就退出了,为了放弃nginx的容器不退出,应该敞开nginx后盾运行CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]