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

633 篇文章 16 订阅
104 篇文章 7 订阅

介绍

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://+:44386
    ports:
      - "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 中的使用还是任重而道远啊,要不断的学习才行!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值