一、首先去https://docs.docker.com/get-docker/下载Windows版本的Docker Desktop并安装(需要win10专业版以上操作系统,并启用CPU虚拟化和安装Hvper-V)。

添加国内镜像源:

{
"registry-mirrors": [
"https://reg-mirror.qiniu.com",
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
],
"insecure-registries": [],
"debug": true,
"experimental": false
}

有时候第一次安装完用VS调试的时候会下载一些数据包,会比较慢,类似于提示:

1>Info: Using vsdbg version '16.6.20415.1'
1>Info: Using Runtime ID 'linux-x64'
1>Info: C:\Users\UserName\vsdbg\vs2017u5 exists, deleting.

老半天不动,这时候去:https://download.csdn.net/download/5653325/12825714

下载离线包,解压缩vs2017u5目录中的内容到C:\Users\UserName\vsdbg\vs2017u5文件夹中根目录中,然后重新启动VS

二、新建一个.NetCore3.1的API项目,在创建的时候选中启用Docker支持。

三、写一个简单的响应输出

public IActionResult Hello()
{
return Content(JsonConvert.SerializeObject(new ContentModal{
Status = 1,
Code = 200,
Message = $"请求成功=>{Request.HttpContext.Connection.LocalIpAddress}:{Request.HttpContext.Connection.LocalPort}",
Content = "ok",
}), "application/json", Encoding.UTF8);
}

四、项目中的Dockerfile文件按以下内容完善(多余的可以删掉)

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 8001
EXPOSE 443
COPY . .
ENV ASPNETCORE_URLS http://+:8001
ENTRYPOINT ["dotnet", "weixinKey.dll"]

并且右键此DockerFile属性,如果较新则复制。

使用Release模式生成项目,管理员运行cmd,定位到当前项目的Release目录下的netcoreapp3.1目录(我用的是.net core3.1版本,如果是其它版本,这个目录名会不同)

然后运行docker build命令打包成docker包

第一次打包的时候会下载所依赖的环境。

五、打包完成后运行Power Shell(管理员模式),然后运行 docker images即可看到docker包已经推送到Docker Desktop中了

六、依次启动多个此docker的实例,本次测试启用了四个实例。(加上-restart=on-failure:3 可以在docker重启后自动启动实例(重试3次))

七、查看Docker Desktop中的实例情况

八、下载Nginx的最新版本(http://nginx.org/download/nginx-1.18.0.zip),解压后编辑conf目录下的nginx.conf,添加以下内容启用负载均衡。

#user  nobody;
worker_processes 1; #error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; #pid logs/nginx.pid; events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout 0;
keepalive_timeout 65; gzip on;
upstream wxapi{
server 10.2.18.244:8887 weight=1;
server 10.2.18.244:8888 weight=1;
server 10.2.18.244:8889 weight=1;
server 10.2.18.244:8890 weight=1;
}
# down 此标记的服务器不参与负载.
# weight 值越大,权重就越大,越能多次响应请求
# backup 其它服务器无法响应是会请求此种类型的服务器应急。
server {
listen 80;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / {
#root html;
#index index.html index.htm;
proxy_pass http://wxapi;
#proxy_redirect default;
} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

九、启动Nginx(双击nginx.exe或者CMD下运行)

十、访问测试

Docker中会对每个实例虚拟一个IP地址,至此,我们的API成功运行在Docker中并通过Nginx实现了负载均衡。

十一、Docker中导出、导入镜像文件命令

导出:docker save -o 要导出的文件.tar image名:tag名

导入:docker load -i 导出的文件.tar

重写打包运行中的容器内容:docker commit -a="wdw" -m="apt-get updated and installed libgdiplus" 17a83c47ffeb  whitelist:1.1

十二、DockerDesktop中如果使用验证码,在没有安装libgdiplus的情况下会报错,需要执行一下命令

apt-get update
apt-get install libgdiplus
ln -s /lib/x86_64-linux-gnu/libdl.so.2 /lib/x86_64-linux-gnu/libdl.so
ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll

第一个ln解决:The type initializer for 'Gdip' threw an exception的问题

第二个ln解决:Unable to load DLL 'libgdiplus'的问题

实现ASP.Net Core3.1运行在DockeDesktop下并用Nginx实现负载均衡的更多相关文章

  1. linux+asp.net core+nginx四层负载均衡

    Linux Disibutaion:Ubuntu 16.04.1 LTS Web Server:Nginx.Kestrel 关于如何在linux中部署asp.net core我这里不再详细介绍,可以参 ...

  2. 把AspDotNetCoreMvc程序运行在Docker上-part4:实现负载均衡

    在上一part<把AspDotNetCoreMvc程序运行在Docker上-part3:使用独立的存储容器>,我们利用MySql容器和Volume实现了真正意义上的数据存储.整个结构非常简 ...

  3. 「在 Kubernetes 上运行 Pgpool-Il」实现 PostgreSQL 查询(读)负载均衡和连接池

    介绍如何在 Kubernetes 上运行 Pgpool-II 实现 PostgreSQL 读查询负载均衡和连接池. 介绍 因为 PostgreSQL 是一个有状态的应用程序,并且管理 PostgreS ...

  4. nginx自定义负载均衡及根据cpu运行自定义负载均衡

    转载请注明出处: 1.nginx如何自定义负载均衡 在Nginx中,可以通过配置文件自定义负载均衡策略.具体步骤如下: 首先,在Nginx配置文件中定义一个upstream模块,并设置负载均衡策略和后 ...

  5. ASP.NET应用使用Nginx做负载均衡遇到的一个问题

    客户在使用我们的某个应用遇到了性能瓶颈,于是决定增加多个节点减轻单节点的压力.部署方案: 1台Nginx服务器 2台应用服务器,每台两个站点(一个应用创建两个IIS站点.不同端口号) Nginx的配置 ...

  6. asp.net core 负载均衡集群搭建(centos7+nginx+supervisor+kestrel)

    概述 本文目的是搭建三台asp.net core 集群, 并配上 nginx做负载均衡   首先准备要运行的源码 http://pan.baidu.com/s/1c20x0bA 准备三台服务器(或则虚 ...

  7. Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

    前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署. 有关如何在 Jexus 中进行部署,请 ...

  8. Centos8 Docker+Nginx部署Asp.Net Core Nginx正向代理与反向代理 负载均衡实现无状态更新

    首先了解Nginx 相关介绍(正向代理和反向代理区别) 所谓代理就是一个代表.一个渠道: 此时就涉及到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称 ...

  9. 探索Asp net core3中的 项目文件、Program.cs和通用host(译)

    引言 原文地址 在这篇博客中我将探索一些关于Asp.net core 3.0应用的基础功能--.csproj 项目文件和Program源文件.我将会描述他们从asp.net core 2.X在默认模版 ...

  10. ASP.NET Core3.1使用IdentityServer4中间件系列随笔(三):创建使用[ClientCredentials客户端凭证]授权模式的客户端

    配套源码:https://gitee.com/jardeng/IdentitySolution 上一篇<ASP.NET Core3.1使用IdentityServer4中间件系列随笔(二):创建 ...

随机推荐

  1. WEB服务与NGINX(14)-NGINX的压缩功能

    1. nginx压缩功能 nginx支持对指定类型的文件进行压缩后再回传给客户端,而且压缩可以设置压缩比,压缩后的文件会明显变小,有助于降低出口带宽的利用率,但是会占用一定的CPU资源. nginx实 ...

  2. 怎么样给Oracle数据库中的表添加列?

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  3. cesium教程7-官方示例翻译-模型要素选择

    源代码示例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  4. Windows有自带的远程桌面 为啥还要商业远程桌面

    网上有一类观点:最好的远程桌面就是windows自带的远程桌面. 那我们打破砂锅问到底,亲手实践下看看. 首先,我们来到了windows官网-远程桌面介绍页面. 如何使用远程桌面 设置你想要连接以使其 ...

  5. 网络安全—Kerberos认证系统

    文章目录 前提知识 原理 第一次对话 第二次对话 第三次对话 总结发现 前提知识 KDC:由AS.TGS,还有一个Kerberos Database组成. Kerberos Database用来存储用 ...

  6. 导入使用es

    from django.shortcuts import render, HttpResponsefrom elasticsearch import Elasticsearchfrom elastic ...

  7. MySQL的索引优化

    一.索引的使用场景 1.全值匹配 通过主键索引查询 mysql> explain select * from t_goods where id = 1 \G; ***************** ...

  8. PHP常用排序算法01——冒泡、插入

    对于排序算法,相信学计算机的同学都不会陌生.今天我们就来复习下常见的两个排序,适合小规模数据的排序算法:冒泡(bubbleSort)和插入(insertionSort). PS:对排序等算法还不太了解 ...

  9. RabbitMQ系列(五) RabbitMQ的文件和目录位置

    概述 每个RabbitMQ节点使用一些文件和目录,用于加载配置.存储数据 / 元数据 / 日志文件等等.这些文件和目录的位置是可以自定义的. 本指南涵盖: 1)如何自定义RabbitMQ节点所使用的各 ...

  10. 11种排序算法(Python实现)

    10种排序算法(Python实现) 冒泡排序 1. 两重循环,每次都将一个点移动到最终位置 def BubbleSort(lst): n=len(lst) if n<=1: return lst ...