Abp Vnext应用程序项目中添加docker支持的小结
文章目录
- 介绍
- 具体步骤
- 1、创建项目
- 2、添加docker支持
- 3、调整
- 4、运行实例
- 总结
介绍
abp vnext 里面的只有 module 项目里面是自动添加 docker 支持的,因为其是面向微服务设计的。但是 application 项目中默认是没有 docker 支持的,如果想要使用,需要自己添加。本文就是介绍在 application 项目中添加 docker 支持的尝试。
本文默认您已经具有了 docker 的相关知识。
具体步骤
1、创建项目
直接看截图吧,这个没啥说的。
创建好后打开项目进项相关 nuget 包的还原,然后修改数据库连接字符串并生成数据库。运行项目不报错并可以看到界面。
2、添加docker支持
将 HttpApi.Host
项目设置为启动项目,然后右击选择【添加】->【容器业务流程协调程序支持】,然后一步一步的添加完成,最终会在 HttpApi.Host
项目中添加一个 Dockerfile 文件,并在项目外添加一个 docker-compose 相关文件。具体步骤如下:
最终效果如下:
3、调整
上面部分中的操作完成后,直接执行 docker-compose 项目,是可以自动生成镜像文件和容器的,但是默认监听的端口是 80
。而在创建 Abp 项目后,自动生成的端口是 44386
,而且 Abp 默认启用了 https 模式。此模式 docker 容器需要证书等配置,这里不做过多说明。我将对代码进行调整,以完成项目的容器化支持。即不使用 https 模式。
在进行 docker 相关调整前,可参考 Abp VNext 项目创建简介 这篇文章进行整体项目的调整。否则可能会出现一些报错。
1、 文件launchSettings.json的调整
在项目的 Properties
下找到此文件,然后按以下内容进行调整(只做参考):
{"profiles": {"DockerApp.Test.HttpApi.Host": {"commandName": "Project","launchBrowser": true,"environmentVariables": {"ASPNETCORE_ENVIRONMENT": "Development"},"applicationUrl": "http://localhost:44386"},"Docker": {"commandName": "Docker","launchBrowser": true,"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}","publishAllPorts": true}}
}
2、文件Program.cs的调整
.MinimumLevel.Override("Microsoft", LogEventLevel.Information).Enrich.FromLogContext().WriteTo.Async(c => c.File("Logs/logs.txt")).WriteTo.Console() //方便在控制台中查看日志信息以进行调试.CreateLogger();
internal static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseUrls("http://*:44386"); //指定监听端口webBuilder.UseStartup<Startup>();}).UseAutofac().UseSerilog();
以上调整都在
HttpApi.Host
项目中
3、文件docker-compose.override.yml的调整
version: '3.4'services:dockerapp.test.httpapi.host:environment:- ASPNETCORE_ENVIRONMENT=Development- ASPNETCORE_URLS=http://+:44386ports:- "44386"volumes:- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
4、运行实例
右击 docker-compose 后选择【调试】->【启动新实例】,稍等一会后自动生成镜像和容器并启动浏览器,可直接查看页面效果。
下面我通过 vs code
提供了生成的镜像和容器查看,如下图:
也可以通过在 cmd
或 powershell
中运行 docker 相关命令进行生成镜像和启动容器,最后查看生成的效果并在浏览器中访问页面。
注意数据库连接,容器化后可能提示数据库连接不上。
总结
总体来说,按照这个方式可以成功完成容器化,要注意的就是数据库的连接问题。因为就算看到了界面,接口的访问也会有数据库连接失败的问题。这个后期在研究。
开始我有直接添加 Dockerfile 文件进行处理,但是各种报错,查了好久也没解决。
也有通过 vs code
中的 docker 插件来添加 Dockerfile ,同时也会添加 docker-compose 相关文件。从 Dockerfile 文件内容分析,应该是没有问题的,但是实际操作中也是各种报错,不知道为什么。
docker 在 .net core 中的使用还是任重而道远啊,要不断的学习才行!
Abp Vnext应用程序项目中添加docker支持的小结相关推荐
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...
- Resx 文件无效。未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List`1请确保已在项目中添加了必需的引用。
在C#程序编写过程中,会遇到:Resx 文件无效.未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List1`请确保已在项目中添加了必需的引用. 主要原因 ...
- 三、在eclipse项目中添加Junit4
JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JUnit有它自己的JUn ...
- vue 打开html流_在vue项目中添加一个html页面,开启本地服务器
在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...
- VB.NET 在项目中添加App.config的配置
右击项目,选择属性, 在属性中选择Settings选项卡,Scope选择User 这样就会在项目中添加了App.config配置 内容: <?xml version="1.0" ...
- 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片
[问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...
- 圣诞节PNG免扣素材|轻松向现有项目中添加节日元素!
制作任何东西,从定制的圣诞卡,图标,可以用于网站设计或包装,甚至图形,照片和插图,PNG免扣格式图片素材,无疑可以帮助你有效的完成项目. 节日的装饰不仅仅包括挂一棵圣诞树和添加金属箔.装饰也可以延伸到 ...
- VS2019 C语言,在一个项目中添加多个包含main函数的源文件并分别调试运行
在使用VS编辑器学习C.或者C++的时候,有时进行一些简单繁多的编程或者测试时需要创建多个项目,而每次新建一个项目都显得比较繁琐,所以我们可以在一个项目中创建多个包来满足需求,但一个项目中包含多个ma ...
最新文章
- 「打造中国人自己的开放 AI」:清华教授唐杰宣布成立AI新期刊
- 红帽虚拟化RHEV-架构简介
- idea2020 需要热部署吗_小微制造企业需要部署MES系统吗?
- HBase存储相关概念
- C++线程池原理及创建(转)
- Nginx 完整安装篇
- windows消息机制详解-3
- GraphQL:Descriptor Attributes
- String.format() 方法用法解说
- php递归5,5.5.1 PHP递归函数
- 读书笔记:《金字塔原理》
- 附件文件超过了服务器的大小,Exchange 2010设置附件大小
- 云计算——交换机基本原理与配置
- 极限与连续知识点总结_大一上学期《高等数学》知识整理-第一章 极限与连续...
- 【报告分享】2019短视频平台数据报告-抖音快手.pdf(附下载链接)
- 巧用友盟UShare、ULink玩转裂变营销
- CAD填充颜色透明颜色设置
- 2、通过mos管构成的逻辑门电路
- LWN:使用Rust实现OpenPGP,这就是Sequoia项目!
- Oracle表空间系列
热门文章
- 计算机机器语言与高级语言转化,机器语言与汇编语言之间是怎么转化的?
- php 后期发展,php – 通过后期处理上传进度
- linux socket read 接受缓存为空_Linux直接IO、缓存IO、阻塞与同步?
- candence的图纸大小设置_提前感受一下,CAD高手的字体和标注设置原则
- python websocket server模块_Python 3.5.2实现websocket服务端(四): WebSocketServer类实现...
- 传统东方韵味尽显|国潮国风包装样机
- UI实用素材|优秀的仪表盘对每项业务都很重要
- 电商C4D设计素材背景,3D效果是最适合电商产品
- python 千万级数据处理_Python实现 ! 千万级别数据处理
- mac mysql 的lb_简单Mysql的lb集群