Docker nginx 集群搭建

环境1:

  • 系统:Linux Centos 7.4 x64
  • 内核:Linux docker 3.10.0-693.2.2.el7.x86_64
  • Docker 版本:18.09.1
  • redis 版本:nginx-1.15.7
  • 主机数量:1台
  • 主机地址:192.168.1.81


环境2:

  • 已搭建 Docker Swarm 管理
  • 已搭建 Docker 私有仓库
  • 已搭建 NFS 存储


目录结构

├── 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


1、创建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

# 指定系统镜像版本
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

文件注释

2、创建镜像(nginx目录下)

docker build -t 192.168.1.81:5000/nginx:v1 .

3、上传镜像

docker push 192.168.1.81:5000/nginx:v1

4、创建 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

# 指定版本
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
        # 更新失败设置,rollback回滚
        failure_action: rollback
        # 更新状态,start-firest 更新同时叠加旧版本,之后删除
        order: start-first
      # 回滚配置
      rollback_config:
        # 每次回滚数量
        parallelism: 1
        # 每次回滚时间
        delay: 10s
        # 回滚失败设置,rollback回滚
        failure_action: rollback
        # 回滚状态,start-firest 回滚同时叠加旧版本,之后删除
        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

文件注释

5、创建服务

docker stack deploy -c service_nginx.yml nginx

原文地址:https://www.cnblogs.com/xiangsikai/p/10291518.html

时间: 2024-11-20 09:36:10

Docker nginx 集群搭建的相关文章

Docker redis集群搭建

Docker redis集群搭建 环境1: 系统:Linux Centos 7.4 x64 内核:Linux docker 3.10.0-693.2.2.el7.x86_64 Docker 版本:18.09.1 redis 版本:redis-4.0.9 主机数量:1台 主机地址:192.168.1.81 环境2: 已搭建 Docker Swarm 管理 已搭建 Docker 私有仓库 已搭建 NFS 存储 目录结构 └── redis ├── Dockerfile ├── redis-4.0.9

Docker swarm 集群搭建

Swarm是Docker公司在2014年12月初发布的一套较为简单的工具,用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机.Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接与Swarm通信.Swarm几乎全部用go语言来完成开发,上周五,4月17号,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来

docker swarm集群搭建

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: swarm是docker原生的集群管理软件,与kubernetes比起来比较简单 1.部署 系统时centos7上关闭防火墙 systemctl stop firewalld.service 关闭selinux vi /etc/selinux/comfig 192.168.10.140 swarm manager192.168.10.141 swarm no

docker zookeeper 集群搭建

#创建集群目录 mkdir /opt/cluster/zk cd /opt/cluster/zk #清理脏数据 docker stop zk-2191 docker stop zk-2192 docker stop zk-2193 docker rm zk-2191 docker rm zk-2192 docker rm zk-2193 #创建配置文件模板[vim zoo-cluster.tmpl] cat >zoo-cluster.tmpl <<HERE clientPort=\${P

30.Nginx集群搭建笔记

源码安装Nginx: tar -zxvf nginx-1.8.0.tar.gz -C /nginx/        #解压Nginx rpm -ivh keepalived-1.2.13-5.el6_6.i686.rpm        #安装keepalived service iptables status        #查看系统防火墙状态 service iptables stop           #停止系统防火墙(重启后恢复) chkconfig iptables --list   

从零开始搭建Docker Swarm集群

从零开始搭建Docker Swarm集群 检查节点Docker配置 1. 打开Docker配置文件(示例是centos 7)vim /etc/sysconfig/docker 2. 添加-H tcp://0.0.0.0:2375到OPTIONSOPTIONS='-g /cutome-path/docker -H tcp://0.0.0.0:2375' 3. CentOS6.6 需要另外添加-H unix:///var/run/docker.sockOPTIONS='-g /mnt/docker 

基于Docker的Consul服务发现集群搭建

原文:基于Docker的Consul服务发现集群搭建 在去年的.NET Core微服务系列文章中,初步学习了一下Consul服务发现,总结了两篇文章.本次基于Docker部署的方式,以一个Demo示例来搭建一个Consul的示例集群,最后给出一个HA的架构示范,也会更加贴近于实际应用环境. 一.示例整体架构 此示例会由一个API Gateway, 一个Consul Client以及三个Consul Server组成,有关Consul的Client和Server这两种模式的Agent的背景知识,请

nginx+apache+php+mysql服务器集群搭建

nginx+apache+php+mysql服务器集群搭建 由于需要搭建了一个基本的服务器集群.具体的配置方案先不说了,到有时间的时候再介绍.下面介绍下整个方案的优点. 我总共准备了四台阿里云的主机,架设分别是A,B1,B2,C,A在集群的最前面,B1和B2在A的后面,C在最后面.A主要用的nginx,用nginx做反向代理的功能实在是强大.nginx把来自80的http请求都转发到B1和B2上,B1和B2主要是两台apache,用于php解析.B1和B2来连接C上的mysql.A上的nginx

Docker系列之swarm集群搭建

学习Docker很久了,今天分享一下Docker的swarm集群的搭建过程很简单 首先第一步是 每台机器上面都要安装docker 本人使用的是centos7操作系统,使用3太虚拟机,3太虚拟机必须网络互通(废话) docker早在1.12版本就已经支持原生的swarm集群搭建了不用再用第三方etcd 等注册发现插件 首先第一步创建集群 docker swarm init 默认的集群地址是本机,当然也可以指定地址通过 --listen-addr 参数指定 执行完上面的命令之后显示了证明创建管理节点