分类:asp.net
基于netcore 3.1的aspnet core发布到Docker
参考:
https://www.cnblogs.com/lonelyxmas/p/10748667.html
https://hub.docker.com/_/microsoft-dotnet-core
https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/Dockerfile
https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/docker/building-net-docker-images?view=aspnetcore-3.1
1.Docker服务端环境准备
a)docker安装:略
b)拉取aspnet依赖镜像,建议先把镜像仓库改成国内服务商,比较快,这里是使用阿里。
docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1
//(指定tag为3.1版本,可以用其他版本)也可以使用runtime镜像,或者sdk镜像,这里建议使用专用的。https://hub.docker.com/_/microsoft-dotnet-core-aspnet/
2.源码准备(手动发布)
a)编写Dockerfile文件:
通过vs项目右键添加Docker支持,会自动创建一个Dockerfile文件及内容,修改文件属性为始终复制并修改里面的内容为以下内容(因为是自己手动发布,而原文件内容是要做持续集成需要编译)
#使用专有镜像及指定netcore版本作为原始依赖镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
#在容器中的当前操作目录
WORKDIR /web
#把服务器中的当目录 复制到 容器中的当前操作目录WORKDIR
COPY . ./
#暴露容器的端口
EXPOSE 80
#使用ENTRYPOINT启动容器中的应用(也可以使用CMD,两者有区别)
ENTRYPOINT ["dotnet", "MVCProject3_1.dll"]
b)发布
点击发布到目录中,并上传到linux服务上
3.docker操作
a)创建镜像
cd publish //进入linux中的源码目录中
docker build -t web1 . //不要忘记最后一个点号,使用build命令创建镜像,名字为web1,点号表示在当前目录寻找Dockerfile文件。
b)生成容器,并后台运行式启动
docker run -i -t -d -p 5000:80 --name=my-web1 web1 /bin/bash //使用服务器端口5000映射容器的端口80
c)查看容器运行状态
docker ps //查看容器是否启动
docker logs $container_id //查看容器的日志
docker exec -it my-web1 /bin/bash //进入容器查看发布源码
d)访问部署好的容器应用
curl 192.168.31.51:5000 //5000为docker run指定的服务器端口,映射对应容器的中EXPOSE端口
4.使用nginx作为netcore应用程序的反向代理:80端口
生成容器时注意选项:–link参数
solenovex 微软MVP
https://space.bilibili.com/361469957?spm_id_from=333.788.b_765f7570696e666f.1
软谋教育
https://ke.qq.com/course/7034?taid=3770740767726458
朝夕教育-2
1.http请求过程在mvc和netcore的区别
2.asp.net mvc http管道与netcore中间件
netcore 中间件配置:Configure方法中执行管道,没有写死的管道执行顺序
dotnet常用命令
1.dotnet –help 帮助 (–help可以在每个命令上使用,可显示详细信息)
2.dotnet new 创建项目和文件
3.dotnet build 只生成
5.dotnet run 生成并运行(会出现dos环境)
6.dotnet watch run 监控文件改动模式下的生成和运行(只要改支项目文件,保存后,自动停止生成运行)
7.dotnet publish 发布项目
8.dotnet restore 还原项目依赖项(常用于项目迁移,dll包文件未打包,配置文件中只存储了包名)
老张的哲学–jwt
1.JWT,JSON Web Token(JWT),作用:保护API
IdentityServer4 默认支持两种类型的 Token,一种是 Reference Token,一种是 JWT Toke
2.有哪些保护方式:
a)非登录状态:自己约定加密,比如支付中常用的md5加密
b)登录状态:session+cookie:常用的方式
c)登录状态:JWT,一切源于HttpContext,重点在于Claim,移动端和SPA(单页面应用)更好。
3.核心知识点:
a)Claim:声明,就是令牌携带的数据,比如:身份证上的姓名,地址,身份证号
b)Bearer:持票人,比如:
c)组成:一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。工
c1)头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等
c2)载荷就是存放有效信息的地方
c3)一个签证信息,这个签证信息由三部分组成
老张的哲学-netcore基础
https://www.bilibili.com/video/av58096866?from=search&seid=6281771915682149506
https://www.cnblogs.com/laozhang-is-phi/p/9495620.html
https://github.com/anjoy8/Blog.Core
1.netcore:
a)跨平台,开源
b)高性能
c)基于kestrel的控制台程序
2.执行流程
a)iis/apache/nginx只是一个反向代理工具,程序的解释放到netcore里(进程外启动)
b)中间件与程序处理模块的区别
c)HttpContext:客户端跟 Web应用程序交互 是通过 HttpContext 传导的。
C#基础-IOC容器之Autofac
1.
组件:类,对旬
服务:接口
2.只注册组件中的类(是不是可以只注册对象)
3.注册类并暴露为服务
4.注册组件中的对象度暴露为服务
5.注册所有的组件 (类) 并且暴露他们的服务 (接口)
asp.netcore基础–目录及文件说明
1.常规目录入文件:截图
2.startup.cs:两个核心方法,ConfigureService和Configure,这两个方法中其实都使用依赖注入,所以方法参数能直接使用(看netcore源码就知,在hostbuild内)!!!
a)ConfigureService:配置服务
b)Configure:配置中间件管道,http按顺序执行,按倒序返回
c)常用中间件:
3.program.cs:
a)查看netcore源码方法vs2019已经替代了很多resharper功能:github官网,vs2019工具中开启,
b)始于WebHost
“`
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();//启动,查看源码里面cmd启动时看到info
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)//dotnet创建默认builder
.UseStartup<Startup>(); //让可自定义的配置
“`
c)托管方式有两种,一种是inprocess和outofprocess,进程内托管是依赖与iis集成,进程外就是kestrel托管后,外面再可以使用反向代理
4.appsettings.json:项目的配置文件代替以前的app.config,使用json编写,修改后需要重新启动项目。
5.Controller:暴露api的controller目录
6.nuget:第三方包/dll管理工具
7.properties/launchSettings.json:项目启动参数,使用json编写,可配置启动域名和端口
8.bin:调用或者发布生成目录,可以进入子目录直接命令行启动:dotnet 项目名.dll
9.wwwroot:静态资源,可以在程序中修改这个默认目录