構(gòu)建前準(zhǔn)備
Nginx版本:1.20.1
Zlib版本:1.2.11
Openssl版本:1.1.1s
Dockerfile工作目錄:/docker_workspaces - 需要?jiǎng)?chuàng)建
相關(guān)模塊工作目錄:/docker_workspaces/workdir - 需要?jiǎng)?chuàng)建
下載相關(guān)模塊
# 進(jìn)入項(xiàng)目模塊工作目錄
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
創(chuàng)建Dockerfile
# 進(jìn)入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;"]
創(chuàng)建鏡像
cd /docker_workspaces
docker build -t nginx:proxy_1.20.1 .
運(yùn)行鏡像
# 創(chuàng)建主機(jī)目錄部逮,用于存儲(chǔ)配置文件目錄
mkdir /usr/local/nginx/conf
# 將配置文件拷貝進(jìn)配置文件目錄,這個(gè)可以從別處拷貝
# 啟動(dòng)
docker run -dit -p 80:80 -p 443:443 -v /usr/local/nginx/conf/:/usr/local/nginx/conf/ nginx:proxy_1.20.1
# 默認(rèn)是開放80/443兩個(gè)端口杂穷,如果需要?jiǎng)e的端口,
# 需要先修改配置文件(/usr/local/nginx/conf)里的端口换薄,然后重新啟動(dòng)谜疤,并增加-p端口映射
# 如果只是修改配置文件转锈,則使用docker restart [容器ID]進(jìn)行重啟服務(wù)
# 本鏡像沒有增加log日志的映射锐涯,如果使用的話需要在配置文件(nginx.conf)中配置后使用-v掛載