介绍
目标
熟悉使用 .NET 创建微服务的构建基块。
先决条件
完成时间
过去 15 分钟
方案
创建返回值列表的简单服务,然后在 Docker 容器中运行该服务。
安装 .NET SDK
若要开始生成 .NET 应用,请下载并安装 .NET SDK (软件开发工具包)。
检查是否已正确安装所有内容
如果安装成功,则应该会看到类似于以下内容的输出:
Command prompt
Usage: dotnet [options]
Usage: dotnet [path-to-application]
Options:
-h|--help Display help.
--info Display .NET information.
--list-sdks Display the installed SDKs.
--list-runtimes Display the installed runtimes.
path-to-application:
The path to an application .dll file to execute.
如果一切正常,请选择下面的 继续 按钮以转到下一步。
遇到错误?
如果收到“未将 “dotnet” 识别为内部或外部命令”错误,请确保已打开新命令提示符。如果无法解决该问题,则使用“我遇到了问题”按钮来获取解决问题的帮助。
如果收到“zsh: 命令未找到: dotnet”错误,请确保已打开新的终端窗口。如果无法解决问题,请使用“遇到问题”按钮获取解决问题的帮助。
如果收到 dotnet: 未找到命令错误,请确保已打开新的终端窗口。如果无法解决问题,请使用“遇到问题”按钮获取解决问题的帮助。
创建服务
Command prompt
dotnet new webapi -o MyMicroservice --no-https -f net7.0
然后,导航到由上一个命令创建的新目录:
Command prompt
cd MyMicroservice
这些命令分别代表什么?
dotnet
命令会创建一个类型为 webapi
的新应用程序(这是一个 REST API 终结点)。
-o
参数创建名为 MyMicroservice
的目录,用于存储应用。
--no-https
标志会创建一个应用,该应用将在没有 HTTPS 证书的情况下运行,以便保持部署简单。
-f
参数指示你正在创建 .NET 7 应用程序。
使用 cd MyMicroservice
命令可进入新创建的应用目录。
生成的代码
已在 MyMicroservice
目录中创建了多个文件,以便为你提供可运行的简单服务。
MyMicroservice.csproj
定义项目引用的库等内容。
Program.cs
包含在应用启动时加载的所有设置和配置。
Controllers/WeatherForecastController.cs
具有一个简单 API 的代码,可返回接下来五天的天气预报。
Properties
目录中的 launchSettings.json
文件为本地开发环境定义不同的配置文件设置。创建项目时会自动分配 5000-5300 之间的端口号并将其保存在此文件上。
以下代码显示位于 Controllers
目录中的 WeatherForecastController.cs
文件的内容:
WeatherForecastController.cs
using Microsoft.AspNetCore.Mvc;
namespace MyMicroservice.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
选择下面的 继续 按钮以转到下一步。
遇到错误?
如果你收到类似于“模版 "ASP.NET Core Web API" 无法创建。无法创建模版。详细信息: 对路径 "C:\Windows\System32\MyMicroservice" 的访问被拒绝”的消息,请将当前目录更改为有权在其中新建文件夹的目录,然后尝试再次运行该命令。
如果在尝试创建项目时 Windows 找不到 SDK,且你确定已安装 SDK,则计算机可能存在 PATH 环境变量问题。请参阅此 Stack Overflow 帖子,获取如何诊断并解决此问题的说明。
如果无法解决遇到的问题,请选择下面的 我遇到了问题 按钮,以获取解决问题的帮助。
运行服务
Command prompt
dotnet run
应看到与以下内容类似的输出:
Command prompt
Building...
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5020
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
Content root path: C:\Users\Ana\MyMicroservice\
等待应用显示正在侦听 http://localhost:<port number>,然后打开浏览器并导航到 http://localhost:<port number>/WeatherForecast。
在此示例中,它显示正在侦听端口 5020,因此以下图像显示了 URL http://localhost:5020/WeatherForecast
。
![API 终结点返回包含天气预报信息的 JSON 数据]()
恭喜,你有简单服务正在运行!
在命令提示符上按 CTRL+C 以结束正在本地运行服务的 dotnet run
命令。
在终端上按 CTRL+C 以结束正在本地运行服务的 dotnet run
命令。
安装 Docker
Docker 是一个平台,让你能将应用及其配置和依赖项组合到单个独立的可部署的、称为容器的单元中。
如果已安装 Docker,请确保其版本为 20.10 或更高版本。
本地预配向导和预配代理。
在可下载安装程序之前,将先要求你注册 Docker Store。
安装 Docker 后,可能会要求你注销以完成安装。
检查 Docker 是否已准备好使用
Command prompt
docker --version
如果命令运行并显示一些版本信息,则 Docker 安装成功。
添加 Docker 元数据
要使用 Docker 映像运行,你需要使用一个 Dockerfile
,这是一个文本文件,其中包含如何将应用构建为 Docker 映像的说明。Docker 映像包含将应用作为 Docker 容器运行所需的一切。
返回到应用目录
由于在上一步中打开了新命令提示符,因此需要返回到创建服务的目录。
由于在上一步中打开了新终端,因此需要返回到创建服务的目录。
Command prompt
cd MyMicroservice
添加 DockerFile
使用以下命令创建名为 Dockerfile
的文件:
Command prompt
touch Dockerfile
Command prompt
fsutil file createnew Dockerfile 0
然后,可以手动或使用此命令在喜欢的文本编辑器中打开它:
Command prompt
open Dockerfile
Command prompt
start Dockerfile
在文本编辑器中将 Dockerfile
的内容替换为以下内容:
Dockerfile
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY MyMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "MyMicroservice.dll"]
注意: 请确保将文件命名为 Dockerfile
,而非Dockerfile.txt
或其他名称。
可选: 添加 .dockerignore 文件
A .dockerignore 文件减少了用作 `docker 生成` 一部分的文件集。更少的文件可使生成速度更快。
使用以下命令,创建名为“.dockerignore
”的文件(类似于 .gitignore
文件,如果你熟悉的话):
Command prompt
touch .dockerignore
Command prompt
fsutil file createnew .dockerignore 0
然后,可以手动或使用此命令在喜欢的文本编辑器中打开它:
Command prompt
open .dockerignore
Command prompt
start .dockerignore
在文本编辑器中将 .dockerignore
的内容替换为以下内容:
.dockerignore
Dockerfile
[b|B]in
[O|o]bj
创建 Docker 映像
运行以下命令:
Command prompt
docker build -t mymicroservice .
docker build
命令使用 Dockerfile
构建Docker 映像。
-t mymicroservice
参数指示它将图像标记(命名)为 mymicroservice
。
- 最后一个参数告知它要使用哪个目录来查找
Dockerfile
(.
指定当前目录)。
- 此命令将下载并生成所有依赖项以创建 Docker 映像,此操作可能需要一些时间。
可以运行以下命令,以查看计算机上可用的所有映像的列表,包括刚刚创建的映像。
Command prompt
docker images
运行 Docker 映像
可以使用以下命令在容器中运行应用:
Command prompt
docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice
可以浏览到以下 URL 以访问在容器中运行的应用程序: http://localhost:3000/WeatherForecast
![API 终结点返回包含天气预报信息的 JSON 数据]()
(可选)可以使用以下命令查看在单独的命令提示符中运行的容器:
(可选)可以使用以下命令查看在单独终端窗口中运行的容器:
Command prompt
docker ps
![运行 docker 映像的列表,其中包含有关每个映像的信息。]()
在命令提示符上按 CTRL+C,以结束在容器中运行服务的 docker run
命令。
在终端上按 CTRL+C 以结束正在容器中运行服务的 docker run
命令。
恭喜! 已成功创建了可以使用 Docker 容器进行部署和扩展的小型、独立服务。
这些是微服务的基本构建基块。
后续步骤
恭喜! 你已创建并在 Docker 容器中运行简单服务。
现在可以通过下一教程了解如何将微服务部署到云。
教程: 将微服务部署到 Azure
你可能还会关注...