构建前准备
Nginx版本:1.20.1
Zlib版本:1.2.11
Openssl版本:1.1.1s
Dockerfile工作目录:/docker_workspaces - 需要创建
相关模块工作目录:/docker_workspaces/workdir - 需要创建
下载相关模块
# 进入项目模块工作目录
cd /docker_workspaces/workdir
# 下载Nginx
wget https://nginx.org/download/nginx-1.20.1.tar.gz
# 下载Zlib并解压
wget https://www.zlib.net/fossils/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
# 下载Openssl并解压
wget https://www.openssl.org/source/openssl-1.1.1s.tar.gz
tar -zxvf openssl-1.1.1s.tar.gz
# 下载ngx_http_proxy_connect_module模块
git clone https://gitee.com/web_design_of_web_frontend/ngx_http_proxy_connect_module.git
创建Dockerfile
# 进入Dockerfile工作目录
cd /docker_workspaces
vim Dockerfile
FROM centos:7
RUN yum install -y patch gcc glibc-devel make pcre-devel gd-devel geoip-devel perl-devel libtool wget
RUN groupadd -g 101 nginx \
&& adduser -u 101 -d /var/cache/nginx -s /sbin/nologin -g nginx nginx
COPY ./workdir /workdir
WORKDIR /workdir
RUN tar -zxvf nginx-1.20.1.tar.gz && cd nginx-1.20.1 \
&& patch -p1 < /workdir/ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_1018.patch \
&& ./configure --prefix=/usr/local/nginx --with-pcre --with-zlib=/workdir/zlib-1.2.11 --with-openssl=/workdir/openssl-1.1.1s --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-stream --with-mail --with-http_v2_module --add-module=/workdir/ngx_http_proxy_connect_module \
&& make && make install \
&& cd /workdir && rm -rf /workdir/*
CMD ["/usr/local/nginx/sbin/nginx", "-g", "daemon off;"]
创建镜像
cd /docker_workspaces
docker build -t nginx:proxy_1.20.1 .
运行镜像
# 创建主机目录,用于存储配置文件目录
mkdir /usr/local/nginx/conf
# 将配置文件拷贝进配置文件目录,这个可以从别处拷贝
# 启动
docker run -dit -p 80:80 -p 443:443 -v /usr/local/nginx/conf/:/usr/local/nginx/conf/ nginx:proxy_1.20.1
# 默认是开放80/443两个端口,如果需要别的端口,
# 需要先修改配置文件(/usr/local/nginx/conf)里的端口,然后重新启动,并增加-p端口映射
# 如果只是修改配置文件,则使用docker restart [容器ID]进行重启服务
# 本镜像没有增加log日志的映射,如果使用的话需要在配置文件(nginx.conf)中配置后使用-v挂载