在微服务架构中,经常需要同时调试多个项目。自从Docker发布以来,基于微服务的应用开发方式发生了很大的变化。在Visual Studio 17中,可以轻松地为应用添加Docker支持。本文将展示如何在不同的Docker容器中调试两个.NET Core项目。
假设有一个微服务架构的应用,它包含两个项目:一个是ASP.NET MVC项目,另一个是Web API项目。MVC项目从API项目获取数据,而API项目在需要时提供数据。在开发过程中,经常需要同时调试这两个项目,以观察应用的行为。
Docker是一个轻量级、开放且安全的开发者平台。它是一个容器化工具,经常被拿来与虚拟机比较,虚拟机消耗大量资源。但Docker为开发者提供了什么好处呢?下面这行描述了使用Docker的主要好处:
Docker提供了一种一致的方式来在不同环境中部署代码。
因此,使用Docker,可以在不同的环境上开发和运行软件,同时使用最少的计算资源。Docker可以消除应用冲突,加快软件部署速度,确保更好地利用资源等等。
Docker自推出以来一直在改变世界,Docker容器在这个任务中扮演着非常重要的角色。Docker容器基本上是Docker镜像的实例,可以简化为:Docker容器是关于运行软件的!可以为任何特定的镜像拥有尽可能多的Docker容器。
在使用代码之前,需要确保一些事情。首先,检查是否已经安装并完美运行了Docker,以及任何版本的Visual Studio 17和.NET Core组件。
在本文中,将创建一个名为“员工考勤”的测试应用,它将显示公司员工的日常考勤数据。为此,首先将创建一个包含两个.NET Core项目的Visual Studio解决方案,一个是ASP.NET MVC,另一个是ASP.NET Web API,如下所示:
Visual Studio非常强大!它已经为在MVC项目中创建了一个控制器和一些视图,还在API项目中创建了一个控制器。让对API控制器进行一些修改,以获取员工考勤数据:
public IEnumerable<EmployeeAttendanceData> Get()
{
List<EmployeeAttendanceData> attendances = new List<EmployeeAttendanceData>
{
new EmployeeAttendanceData{ Name="Romel", LogInTime = new DateTime(2017, 6, 1, 12, 20, 0), Status="Late" },
new EmployeeAttendanceData{ Name="Ashek", LogInTime = new DateTime(2017, 6, 2, 8, 20, 0), Status="In time" },
new EmployeeAttendanceData{ Name="Hassan", LogInTime = new DateTime(2017, 6, 3, 9, 20, 0), Status="In time" },
new EmployeeAttendanceData{ Name="Chapal", LogInTime = new DateTime(2017, 6, 4, 9, 15, 0), Status="In time" },
new EmployeeAttendanceData{ Name="Maruf", LogInTime = new DateTime(2017, 6, 5, 11, 20, 0), Status="Late" }
};
return attendances;
}
在API控制器中创建了一个GET方法,用于提供考勤数据。注意,还创建了一个名为EmployeeAttendanceData的模型类。
从MVC控制器中,将调用API控制器的方法来获取考勤数据。让来编码:
public IActionResult Index()
{
ValuesController apiController = new ValuesController();
IEnumerable<EmployeeAttendanceData> attendances = apiController.Get();
ViewBag.attendances = attendances;
return View();
}
在上面的动作方法中,调用了API控制器的GET方法,并将考勤数据存储在ViewBag中,之后将在视图中枚举这个集合。
可以在项目中单独添加Docker支持,也可以在解决方案文件中添加。要为每个项目添加Docker支持,右键单击项目,在“添加”菜单下,会看到添加Docker支持的选项。
必须为每个项目添加Docker支持。添加Docker支持后,将看到一个Dockerfile已经添加到项目中,这个文件有入口点、工作目录等其他信息,用于容器。同时注意,解决方案中添加了一个新的docker-compose项目,在docker-compose下有一个docker-compose.yml文件来实例化项目的Docker容器。
现在已经为项目添加了Docker支持,是时候创建项目的Docker镜像并在容器上运行它们了。使用Docker运行应用程序以创建项目的镜像并在容器上运行它们。成功创建镜像和容器后,打开Windows PowerShell并运行此命令:
docker ps
将看到当前正在运行的Docker容器,如下所示:
现在,如果在浏览器中输入这个URL地址:
http://localhost:32769/
将看到应用程序正在DockerLinux容器上运行。