1.目录结构
├── nginx
│ ├── dist.zip # 自定义项目
│ ├── Dockerfile
│ ├── nginx-1.15.7.tar.gz
│ ├── nginx.conf
│ ├── openssl-1.1.1a.tar.gz
│ ├── pcre-8.42.tar.gz
│ ├── vhosts.conf
│ └── zlib-1.2.11.tar.gz
└── service_nginx.yml
下载
- nginx压缩包
- 下载地址:https://pan.baidu.com/s/1yb783fGyn62kWi8j3hvtmQ
- 密码:h41v
- openssl压缩包
- 下载地址:https://pan.baidu.com/s/1l5oiq0-ZzRP00oTfEd6aqA
- 密码:8uk3
- pcre压缩包
- 下载地址:https://pan.baidu.com/s/1sXDtYsRlye1ANwCz3bS8BA
- 密码:mrmd
- zlib压缩包
- 下载地址:https://pan.baidu.com/s/1AWsZ00uhn32KCg9eGSF1SA
- 密码:6mwr
2. 创建dockerfile
# 指定系统镜像版本
FROM centos:6
# 指定管理员名称
MAINTAINER xiangsikai
# 添加变量,指定中文编码
ENV LANG en_US.UTF-8
# 添加变量,同步系统时间
ENV TZ=Asia/Shanghai
# 添加命令
RUN yum install sudo unzip -y
# 添加命令
RUN sudo yum update -y && \
sudo yum groupinstall -y 'Development Tools' && \
sudo yum install -y epel-release && \
sudo yum install -y perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel GeoIP GeoIP-devel
# 添加文件
ADD nginx-1.15.7.tar.gz /home/root/
# 添加文件
ADD pcre-8.42.tar.gz /home/root/
# 添加文件
ADD zlib-1.2.11.tar.gz /home/root/
# 添加文件
ADD openssl-1.1.1a.tar.gz /home/root/
# 添加命令
RUN cd /home/root/nginx-1.15.7/ && ./configure --prefix=/usr/local/nginx \
--sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf \
--user=nginx \
--group=nginx \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-select_module \
--with-poll_module \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-mail=dynamic \
--with-mail_ssl_module \
--with-stream=dynamic \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module=dynamic \
--with-stream_ssl_preread_module \
--with-compat \
--with-pcre=../pcre-8.42 \
--with-pcre-jit \
--with-zlib=../zlib-1.2.11 \
--with-openssl=../openssl-1.1.1a \
--with-openssl-opt=no-nextprotoneg \
--with-debug && \
make && make install
# 添加命令
RUN sudo useradd nginx && sudo mkdir /etc/nginx/conf.d
# 添加文件
COPY nginx.conf /etc/nginx/nginx.conf
# 添加文件
COPY vhosts.conf /etc/nginx/conf.d/
# 添加文件
ADD dist.zip /usr/local/nginx/html/
# 添加命令
RUN unzip /usr/local/nginx/html/dist.zip -d /usr/local/nginx/html/
# 启动命令
CMD ["nginx","-g","daemon off;"]
# 开放端口
EXPOSE 80
3、创建镜像(nginx目录下)
docker build -t 192.168.1.81:5000/nginx:v1 .
4、上传镜像
docker push 192.168.1.81:5000/nginx:v1
5、创建 service_nginx.yml
version: '3.7'
services:
nginx:
image: 192.168.1.81:5000/nginx:v1
ports:
- 2008:80
networks:
- networkce
deploy:
mode: replicated
replicas: 2
update_config:
parallelism: 1
delay: 10s
failure_action: rollback
order: start-first
rollback_config:
parallelism: 1
delay: 10s
failure_action: rollback
order: start-first
volumes:
- type: volume
source: nfs-nginx_log
target: /var/log/nginx
volume:
nocopy: true
configs:
- source: nginx_config
target: /etc/nginx/nginx.conf
- source: nginx_vhosts
target: /etc/nginx/conf.d/vhosts.conf
networks:
networkce:
driver: overlay
volumes:
nfs-nginx_log:
driver: local
driver_opts:
type: "nfs"
o: "addr=192.168.1.81,vers=4,soft,timeo=180,bg,tcp,rw"
device: "192.168.1.81:/docker/service/zs/nginx/log"
configs:
nginx_config:
file: /docker/service/zs/nginx/config/nginx.conf
nginx_vhosts:
file: /docker/service/zs/nginx/config/vhosts.conf
6、创建服务
docker stack deploy -c service_nginx.yml nginx