文章目录

  • 介绍
  • 具体步骤
    • 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 提供了生成的镜像和容器查看,如下图:

也可以通过在 cmdpowershell 中运行 docker 相关命令进行生成镜像和启动容器,最后查看生成的效果并在浏览器中访问页面。

注意数据库连接,容器化后可能提示数据库连接不上。

总结

总体来说,按照这个方式可以成功完成容器化,要注意的就是数据库的连接问题。因为就算看到了界面,接口的访问也会有数据库连接失败的问题。这个后期在研究。

开始我有直接添加 Dockerfile 文件进行处理,但是各种报错,查了好久也没解决。

也有通过 vs code 中的 docker 插件来添加 Dockerfile ,同时也会添加 docker-compose 相关文件。从 Dockerfile 文件内容分析,应该是没有问题的,但是实际操作中也是各种报错,不知道为什么。

docker.net core 中的使用还是任重而道远啊,要不断的学习才行!

Abp Vnext应用程序项目中添加docker支持的小结相关推荐

  1. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...

  2. 关于如何正确地在android项目中添加第三方jar包

                  在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...

  3. Resx 文件无效。未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List`1请确保已在项目中添加了必需的引用。

    在C#程序编写过程中,会遇到:Resx 文件无效.未能加载 .RESX 文件中使用的类型 System.Collections.Generic.List1`请确保已在项目中添加了必需的引用. 主要原因 ...

  4. 三、在eclipse项目中添加Junit4

    JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个. JUnit有它自己的JUn ...

  5. vue 打开html流_在vue项目中添加一个html页面,开启本地服务器

    在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...

  6. VB.NET 在项目中添加App.config的配置

    右击项目,选择属性, 在属性中选择Settings选项卡,Scope选择User 这样就会在项目中添加了App.config配置 内容: <?xml version="1.0" ...

  7. 给iOS项目中添加图片,并通过UIImageView引用和显示该UIImage图片

    [问题] 关于iOS/iPhone中的文件选择对话框,用于用户去选择图片等文件 过程中,问题转换为,需要给当前iOS项目中,添加一个图片. 类似于Windows开发中的资源文件,其中图片文件属于资源的 ...

  8. 圣诞节PNG免扣素材|轻松向现有项目中添加节日元素!

    制作任何东西,从定制的圣诞卡,图标,可以用于网站设计或包装,甚至图形,照片和插图,PNG免扣格式图片素材,无疑可以帮助你有效的完成项目. 节日的装饰不仅仅包括挂一棵圣诞树和添加金属箔.装饰也可以延伸到 ...

  9. VS2019 C语言,在一个项目中添加多个包含main函数的源文件并分别调试运行

    在使用VS编辑器学习C.或者C++的时候,有时进行一些简单繁多的编程或者测试时需要创建多个项目,而每次新建一个项目都显得比较繁琐,所以我们可以在一个项目中创建多个包来满足需求,但一个项目中包含多个ma ...

最新文章

  1. 「打造中国人自己的开放 AI」:清华教授唐杰宣布成立AI新期刊
  2. 红帽虚拟化RHEV-架构简介
  3. idea2020 需要热部署吗_小微制造企业需要部署MES系统吗?
  4. HBase存储相关概念
  5. C++线程池原理及创建(转)
  6. Nginx 完整安装篇
  7. windows消息机制详解-3
  8. GraphQL:Descriptor Attributes
  9. String.format() 方法用法解说
  10. php递归5,5.5.1 PHP递归函数
  11. 读书笔记:《金字塔原理》
  12. 附件文件超过了服务器的大小,Exchange 2010设置附件大小
  13. 云计算——交换机基本原理与配置
  14. 极限与连续知识点总结_大一上学期《高等数学》知识整理-第一章 极限与连续...
  15. 【报告分享】2019短视频平台数据报告-抖音快手.pdf(附下载链接)
  16. 巧用友盟UShare、ULink玩转裂变营销
  17. CAD填充颜色透明颜色设置
  18. 2、通过mos管构成的逻辑门电路
  19. LWN:使用Rust实现OpenPGP,这就是Sequoia项目!
  20. Oracle表空间系列

热门文章

  1. 计算机机器语言与高级语言转化,机器语言与汇编语言之间是怎么转化的?
  2. php 后期发展,php – 通过后期处理上传进度
  3. linux socket read 接受缓存为空_Linux直接IO、缓存IO、阻塞与同步?
  4. candence的图纸大小设置_提前感受一下,CAD高手的字体和标注设置原则
  5. python websocket server模块_Python 3.5.2实现websocket服务端(四): WebSocketServer类实现...
  6. 传统东方韵味尽显|国潮国风包装样机
  7. UI实用素材|优秀的仪表盘对每项业务都很重要
  8. 电商C4D设计素材背景,3D效果是最适合电商产品
  9. python 千万级数据处理_Python实现 ! 千万级别数据处理
  10. mac mysql 的lb_简单Mysql的lb集群