编写Dockerfile生成负载均衡nginx镜像

在实际场景中,当客户端同时发送几百甚至几千个请求到服务端端时,会使服务端产生很大负载,从而影响处理效率。为了减轻服务端压力,采用nginx作为一个代理服务器,可以有效地减轻单个服务器压力,即服务器集群化管理。

Docker安装教程

请参考另一篇博客,链接[link]

环境准备

  下载相关文件 nginx-1.16.1.tar.gz,pcre-8.43.tar.gz,zlib-1.2.11.tar.gz
  下载链接[nginx-zph](https://pan.baidu.com/s/1f799OOeiz-xetb1fgjK27A),提取码:xslj
  nginx-zph文件夹目录
         -- nginx-zph
              - Dockerfile
              - nginx-1.16.1.tar.gz
              - pcre-8.43.tar.gz
              - zlib-1.2.11.tar.gz
              - nginx.conf

Docker创建镜像两种方式

(1) docker commit 容器id 镜像名:版本
(2) 通过编写dockerfile文件,
     $: docker build -t 镜像名:版本 -f Dockerfile .    #注意有一点,表示在当前文件夹下

编写Dockerfile生成负载均衡nginx镜像

1.dockerfile(文件见文件夹nginx文件夹)

FROM ubuntu:16.04 
MAINTAINER soulzph
ENV DEBIAN_FRONTEND noninteractive
ENV LANG C.UTF-8
WORKDIR /usr/local/nginx/
RUN apt-get update && apt-get install -y --no-install-recommends \
	    apt-get install gcc \
	    apt-get install g++ \
	    apt-get install make \ 
	    apt-get install -y --no-install-recommends \
	    apt-get install openssl \
	    apt-get install openssl libssl-dev
ADD nginx-1.16.1.tar.gz /usr/local/
ADD pcre-8.43.tar.gz /usr/local/
ADD zlib-1.2.11.tar.gz /usr/local/
RUN ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-pcre=/usr/local/pcre-8.43 --with-zlib=/usr/local/zlib-1.2.11 --with-http_v2_module && make && make install
RUN rm -f /usr/local/pcre-8.43.tar.gz && rm -f /usr/local/zlib-1.2.11.tar.gz \
	    rm -f /usr/local/nginx-1.16.1/gcc \
	    rm -f /usr/local/nginx-1.16.1/g++ \
	    rm -f /usr/local/nginx-1.16.1/openssl \
	    rm -f /usr/local/nginx-1.16.1.tar.gz  \
	    rm -f /usr/local/nginx/conf/nginx.conf
COPY nginx.conf /usr/local/nginx/conf/
EXPOSE 8080
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

Dockerfile命令解释:

FROM 镜像名:版本     #拉取基础镜像
FROM 镜像名:版本 as build    #如果有多个FROM时,该镜像为基础镜像
MAINTAINER 修改人	  #设置编写人信息或联系方式
ENV  #设置变量,只在创建镜像时用到
WORKDIR   #设置镜像工作时的路径
RUN 	#创建镜像时需要安装的一些以来或者文件下载
ADD     #将文件上传到镜像的指定路径
COPY    # 同ADD一样,注意上传文件夹时,上传到镜像指定路径下的同名文件夹下
        #  eg: COPY  APP /usr/local/APP
EXPOSE  #设置镜像对外开放端口号
CMD     #镜像启动时的执行命令,注意,若有新的命令,该命令会被覆盖;多个CMD命令时,只执行最后一个命令
ENTRYPOINT #镜像启动时的执行命令,但该命令不会被覆盖(建议不要与CMD命令共存)

2.配置文件nginx.conf

#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include mime.types;
    default_type  application/octet-stream;
    keepalive_timeout  65;
    client_max_body_size 100M;     #配置请求文件大小
    client_body_buffer_size 500k;
    fastcgi_intercept_errors on;
    #配置动态服务器组
    upstream grpcservers {
      server localhost:8500;  
      server localhost:8501;
    }
     #使用http服务器监听gRPC的请求
    server {
        listen 8080 http2;     #gRPC必须使用HTTP/2传输数据
        server_name localhost;
                location / {
          grpc_pass grpc://grpcservers;      
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
  }

upstream模块默认的负载均衡策略是轮询,目前Nginx服务器的upstream模块支持6种方式的分配,分别为轮询(默认方式)、weight、ip_hash、least_conn、fair(第三方)、url_hash(第三方)等,具体使用方式请参照link

3.开始创建

  进入到文件存放路径,即nginx-zph文件夹下
  $: cd path/to/nginx-zph
  $: docker build -t nginx-zph:1.0.4 -f Dockerfile .

4.启动nginx镜像,生成容器

  $: docker run -p 8080:8080 -td nginx-zph:1.0.4

5.查看是否启动成功:

  $: docker ps

在这里插入图片描述
更多docker的应用,请参考另一篇博客link
至此,Dockerfile生成负载均衡nginx镜像顺利完成!

参考文档

https://www.cnblogs.com/1214804270hacker/p/9325150.html
https://www.jianshu.com/p/7797b200e1f4

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值