ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

win10 docker部署nginx对dotnetcore应用实现负载均衡

2020-05-25 23:57:36  阅读:401  来源: 互联网

标签:容器 server nginx dotnetcore WebApp win10 dotnet docker


原文:win10 docker部署nginx对dotnetcore应用实现负载均衡

nginx功能

反向代理,负载均衡,缓存静态资源,如图片、CSS、JS

正向代理和反向代理

正向代理

代理客户端,代客户端发出请求,客户端知道要访问的真实地址,如vpn

反向代理

代理服务端,代服务端接收请求,客户端不知道要访问的真实地址

win10 docker部署nginx对dotnetcore应用实现负载均衡

一、部署nginx

#拉取镜像
docker pull nginx:latest
#运行容器,挂载日志目录,方便查看错误信息
docker run --name nginx-test -v C:/nginx/log:/var/log/nginx -p 80:80 -d nginx:latest

访问localhost检查是否可以正常访问

二、nginx文件检查

nginx相关文件夹在容器中的位置
日志位置:/var/log/nginx/
配置文件位置:/etc/nginx/
项目位置:/usr/share/nginx/html

#可进入容器内部查看
docker exec -it [容器id] bash

三、nginx.conf文件修改

  1. 从容器中拷贝配置文件到宿主机
docker cp nginx-test:/etc/nginx/nginx.conf C:/nginx
  1. 配置本地host www.helloworld.com
  2. 修改宿主机nginx.conf文件
#省略原有配置信息
http{
    #设定实际的服务器列表
    upstream load_balance_server {
        #weigth参数表示权值,权值越高被分配到的几率越大
        #ip使用ipconfig获取,不要使用127.0.0.1或localhost
        server 192.168.43.10:8111   weight=5;
        server 192.168.43.10:8112   weight=1;
        server 192.168.43.10:8113   weight=6;
    }
    #HTTP服务器
    server {
        #侦听80端口
        listen       80;

        #定义使用www.xx.com访问
        server_name  www.helloworld.com;

        #对所有请求进行负载均衡请求
        location / {
            root        /root;                 #定义服务器的默认网站根目录位置
            index       index.html index.htm;  #定义首页索引文件的名称
            proxy_pass  http://load_balance_server ;#请求转向load_balance_server 定义的服务器列表
        }
    }
}
  1. 更新到容器
#修改配置文件后,将配置文件拷贝回容器
docker cp C:/nginx/nginx.conf nginx-test:/etc/nginx
#重启容器,使配置生效
docker restart nginx-test

四、部署dotnetcore应用

  1. 宿主机直接运行
dotnet run --urls http://*:8111
dotnet run --urls http://*:8112
dotnet run --urls http://*:8113
  1. 容器部署
    Dockerfile编写
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY WebApp/*.csproj ./WebApp/
RUN dotnet restore

# copy everything else and build app
COPY WebApp/. ./WebApp/
WORKDIR /app/WebApp
RUN dotnet publish -c Release -o out


FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
WORKDIR /app
COPY --from=build /app/WebApp/out ./
ENTRYPOINT ["dotnet", "WebApp.dll", "--urls", "http://*:8111"]

生成镜像并运行3个容器

docker build -t webapp .
docker run --name webapp -d -p 8111:8111 webapp
docker run --name webapp2 -d -p 8112:8111 webapp
docker run --name webapp3 -d -p 8113:8111 webapp

参考

Docker中运行nginx并挂载本地目录到镜像中
win10 linux docker nginx tomcat 集群负载均衡-天坑
Nginx 简易教程

标签:容器,server,nginx,dotnetcore,WebApp,win10,dotnet,docker
来源: https://www.cnblogs.com/lonelyxmas/p/12961803.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有