docker文件挂载服务器,.NET Core 基于 Docker 基础镜像和挂载文件部署

原标题:.NET Core 基于 Docker 基础镜像和挂载文件部署

转自: 可均可可

cnblogs.com/PatrickLiu/p/14181218.html

简介

我们在上一篇文章《.NET Core 基于 Dockerfile 文件部署》中介绍了,如何在Linux系统上的Docker容器中部署.NET Core项目的第一种方法。

如果大家要想练习我们的例子,大家必须对Linux系统有所了解,对Linux的基础操作命令也要有使用经验,因为我踩了很多坑,伤心啊。在这个基础上,也要对Docker比较熟悉,Docker的操作命令也要比较熟悉,否则,真的就有些困难了。

这篇介绍把Net Core项目部署到Linux系统中的Docker容器中第二种方式,继续我们这个系列。这三种方式要这么详细的交代,是因为,在我以后的文章里,如果再有涉及项目的部署和迁移的话题,就不会写的这么详细了。

也希望大家见谅和理解,因为我们每篇文章都要突出文章的主题,而且每篇文章解决一个问题,否则,喧宾夺主就不好了。看过我文章的人会知道,我的文章会有重复的部分,这样做也是为了照顾读者,每篇文章都是独立的,让大家看的清楚和明白,避免在多篇文章之间切换,不是为了凑字数。

我们开始创建项目镜像和挂载文件,开始之前我们先创建测试项目。

一、搭建测试项目

(1)、PatrickLiu.MicroService.Interfaces(NetCore类库项目),定义抽象接口层,代码很简单,因为它不是重点,重点是框架。

6e750650617a978dc9684291403d9d24.png

(2)、PatrickLiu.MicroService.Models(NetCore类库项目),定义用于传递数据的实体模型,代码很简单,因为它不是重点,重点是框架。

30b4cd386b8eb2e3e22a758d3a7c758e.png

(3)、PatrickLiu.MicroService.Services(NetCore类库项目),定义实现接口的服务层,代码很简单,因为它不是重点,重点是框架。

a5e96f0a80b6a7fdac8b3f4a003b4a7c.png

(4)、PatrickLiu.MicroService.ServiceInstance(Asp.Net Core WebAPI项目),对外提供业务功能WebApi项目,该项目必须引入其他关联项目:

PatrickLiu.MicroService.Interfaces

PatrickLiu.MicroService.Models

PatrickLiu.MicroService.Services

72184b24907c0412e5e42dce6645fe53.png

样例代码:

namespacePatrickLiu.MicroService.ServiceInstance.Controllers

{

///

///用户的 API 类型。

///

[Route( "api/[controller]")]

[ApiController]

publicclassUsersController: ControllerBase

{

# region私有字段

privatereadonlyILogger _logger;

privatereadonlyIUserService _userService;

privateIConfiguration _configuration;

# endregion

# region构造函数

///

///初始化该类型的新实例。

///

///日志记录器。

///用户服务接口。

///配置服务。

publicUsersController( ILogger logger, IUserService userService, IConfiguration configuration)

{

_logger = logger;

_userService = userService;

_configuration = configuration;

}

# endregion

# region实例方法

///

///获取一条记录

///

///

///

[HttpGet]

[Route( "Get")]

publicUser Get( intid)

{

return_userService.FindUser(id);

}

///

///获取所有记录。

///

///

[HttpGet]

[Route( "All")]

//[Authorize]

publicIEnumerable Get

{

Console.WriteLine( $"This is UsersController { this._configuration[ "port"]}Invoke");

returnthis._userService.UserAll.Select((user => newUser

{

ID = user.ID,

Name = user.Name,

Account = user.Account,

Password = user.Password,

Email = user.Email,

Role = $" { this._configuration[ "ip"]}: { this._configuration[ "port"]}",

LoginTime = user.LoginTime

}));

}

///

///超时处理

///

///

[HttpGet]

[Route( "Timeout")]

publicIEnumerable Timeout

{

Console.WriteLine( $"This is Timeout Start");

//超时设置。

Thread.Sleep( 3000);

Console.WriteLine( $"This is Timeout End");

returnthis._userService.UserAll.Select((user => newUser

{

ID = user.ID,

Name = user.Name,

Account = user.Account,

Password = user.Password,

Email = user.Email,

Role = $" { this._configuration[ "ip"]}: { this._configuration[ "port"]}",

LoginTime = user.LoginTime

}));

}

# endregion

}

}

///

///配置注入容器的实例。

///

///

publicvoidConfigureServices( IServiceCollection services)

{

services.AddSingleton;

}

Program.cs

publicstaticvoidMain( string[] args)

{

newConfigurationBuilder

.SetBasePath(Directory.GetCurrentDirectory)

.AddCommandLine(args) //支持命令行

.Build;

CreateHostBuilder(args).Build.Run;

}

二、发布项目

我们为了将.NET Core项目部署到Linux(CentOS7)环境的Docker容器中去,先要发布我们的项目:PatrickLiu.MicroService.ServiceInstance,因此,我们就要在该项目上点击鼠标右键选择菜单【发布】。

1、开始发布项目

c55c6ffb2b2af7c62986768a0506c593.png

2、项目发布成功

e1bbc52971ce46ee745af5a3e399c0c9.png

3、发布后的项目文件。

3657bed4a274ba0bfffed42d515d5e54.png

三、生成Docker镜像文件

1、拷贝文件

项目文件必须发布成功,然后将发布成功的程序文件拷贝的Linux服务器上。

服务器路径:/root/testProject/second

87537330d1ed633dfada6f754490fce8.png

Linux(CentOS7)服务器上的文件目录结构。

9398144eac1eda4c9a0465db6e0d6c50.png

2、查看Linux服务器上的文件结构

命令:ls –a

3d6cfd3fa905fdcd7634e014c910e586.png

四、生成容器实例

我们可以直接生成容器实例了。

命令:docker run -d -p 8083:80 -v /root/testProject/second:/app --workdir /app mcr.microsoft.com/dotnet/core/aspnet dotnet /app/PatrickLiu.MicroService.ServiceInstance.dll

90a0dc6b32b825bd4fada8097d973db6.png

五、通过命令测试容器是否正常运行

命令:Docker ps –a

0089f3562fc0dcf67c2f44683a186eb9.png

六、通过浏览器访问来测试

容器启动正常,那我们就可以通过浏览器访问看看,我们先获取我们的地址。

命令:ifconfig

fade913b0d3dec59e88db5004da8fff9.png

有了地址,我们访问:http://192.168.127.141:8083/api/users/all

b4793e291d8f43906afdcc7bfda4d502.png

七、总结

这个系列整理起来还是很费劲的,因为每个环节都要测试到,保证所写的代码都在测试环境中能运行的,但是累并快乐着。正所谓,不积跬步,无以至千里,每天进步一点点,加油。返回搜狐,查看更多

责任编辑:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值