abp.io(vNext)部署备忘
Posted 上将军
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了abp.io(vNext)部署备忘相关的知识,希望对你有一定的参考价值。
- 编译镜像
编译使用的Dockerfile文件是vs自动创建的,存在以下几个问题:
- 编译使用的aspnet包是3.1-buster-slim,sdk包是3.1-buster,编译后在centOS 8上跑不了,把两个包都换成3.1,也就是没有
-buster-slim
和-buster
,就没有问题了。 - 要在解决方案路径进行编译,不要在项目路径编译,不然会发生复制文件错误。编译的具体语句如下:
docker build -t <MyTag> . -f <项目路径>\\Dockerfile
-
mysql的表名
在windows的MySql,表名是不区分大小写的,而在Linux上默认是区分大小写的,如果直接使用windows下的脚本在Linux上创建数据库,哪应用程序就会因大小写问题而找不到表。要解决这个问题,一是在部署机器上运行迁移程序直接生成数据库,一是在本地使用虚拟机,先在虚拟机上的MySq执行迁移,再导出脚本。 -
docker部署
由于部署不是all in one的方式,要使应用程序能连接上MySQL,目前测试到的方案只有将应用程序部署到host
网络。使用桥接方式(bridge),连redis是没有问题,但就是连不上MySQL,具体什么原因,还没找到相关答案。具体的部署命令如下(假设应用程序的名称为hello):
sudo docker run -itd --name hello --privileged=true --network=host -v /usr/local/docker/hello/log/:/app/Logs -v /usr/local/docker/hello/appsettings.Production.json:/app/appsettings.Production.json -d hello
以上命令中,已将应用程序的日志映射到本地文件/usr/local/docker/hello/log/
,这里一定要注意文件夹的大小写,在容器内部的文件夹名称是/app/Logs
,如果写成小写/app/logs
,就映射不了了。同样,把配置文件也映射到本地文件夹以方便配置。
由于应用程序部署到了host
网络,因而在配置文件中,可以直接使用127.0.0.1
来连接redis和MySQL,不需要特别的配置,非常的方便。
如果将应用程序部署到host
网络,哪又会产生新的问题,应用程序就会使用本地80
口作为监听端口,这时候要修改应用程序的kestrel
配置,具体代码如下:
Microsoft.Extensions.Hosting.Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
webBuilder.ConfigureKestrel(kestrelBuilder =>
kestrelBuilder.Listen(IPAddress.Loopback, 5000);
kestrelBuilder.Listen(IPAddress.Loopback, 5001);
);
webBuilder.UseStartup<Startup>();
)
.UseAutofac()
.UseSerilog();
以上代码监听了两个端口,一个是基于http的,一个是基于https,参考微软文档,监听https的端口还要进行证书配置,具体怎么配置还没仔细研究,先把应用程序跑起来再说。
- nginx配置
由于应用程序部署到了host
网络,这使用Nginx的配置也变得简单了,直接转发到http://127.0.0.1:5000
就可以了,具体的serve配置如下:
server
listen 80;
server_name 具体域名;
location /
proxy_pass http://127.0.0.1:5000/;
proxy_redirect default;
以上是关于abp.io(vNext)部署备忘的主要内容,如果未能解决你的问题,请参考以下文章
Abp.io(vNext)开发日志:单页面应用与外部/社交登录
Abp.io(vNext)开发日志:单页面应用与外部/社交登录