介紹
本文的目的是:通過建立一個返回列表的簡單服務,並在 Docker 容器中執行該服務,讓您熟悉使用 .NET 建立微服務的構建過程。
安裝 .NET SDK
要開始構建 .NET 應用程式,首先下載並安裝 .NET Core SDK(軟體開發工具包)。
根據作業系統的型別下載並安裝對應版本的 .NET Core SDK v3.1:.NET SDK (64-位) 或 .NET SDK (32-位)
全部 .NET SDK 下載頁面(Download .NET SDKs for Visual Studio):
https://dotnet.microsoft.com/download/visual-studio-sdks
檢查安裝是否正確
.NET SDK 安裝完成後,開啟一個命令提示符視窗並執行以下命令:
dotnet
如果命令執行時,列印出的資訊是介紹如何使用 dotnet
,說明安裝正確。
建立您的服務
建立一個應用
在命令提示符視窗執行以下命令:
dotnet new webapi -o myMicroservice --no-https
cd myMicroservice
第一行中 dotnet
命令建立了一個 webapi
(一個 REST API 終端)型別的“新”應用。
- 引數
-o
建立一個名為myMicroservice
的目錄,用於儲存應用程式。 - 標記
--no-https
建立一個不需要 HTTPS 證書就可以執行的應用程式,以便簡化部署。
使用 cd myMicroservice
命令進入新建應用程式的目錄。
生成的程式碼
可以看到,在 myMicroservice
目錄中建立了幾個檔案,為您提供了一個可以執行的簡單服務。
myMicroservice.csproj
定義了專案引用的庫等。Startup.cs
包含應用程式啟動時載入的所有設定和配置。Controllers/WeatherForecastController.cs
有一個簡單 API 的程式碼,可以返回未來 5 天的天氣預報(模擬資料)。
Controllers/WeatherForecastController.cs
檔案中程式碼:
[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]
public IEnumerable<WeatherForecast> Get()
{
var rng = new Random();
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = rng.Next(-20, 55),
Summary = Summaries[rng.Next(Summaries.Length)]
})
.ToArray();
}
}
執行您的服務
確保命令提示符定位在 myMicroservice
目錄中,執行以下命令:
dotnet run
命令完成後,在瀏覽器中開啟『http://localhost:5000/WeatherForecast』
恭喜,您已經執行了一個簡單的服務。
安裝 Docker
Docker 是一個平臺,它可以讓你將一個應用程式及其配置和依賴項組合成一個叫作容器的單獨的、可獨立部署的單元。
下載並安裝 Docker Desktop
請參閱我之前翻譯的 Docker 快速入門(一)
檢查 Docker 是否可用
安裝完成後,開啟一個新的命令提示符視窗並執行以下命令:
docker --version
若命令執行後,顯示一個版本資訊,那麼表示 Docker 安裝成功了。
新增 Docker 後設資料
要執行 Docker 映象,需要一個 Dockerfile
—— 一個文字檔案,其中包含如何將應用構建為 Docker 映象的指令。Docker 映象包含將您的應用作為 Docker 容器執行所需的所有內容。
新增 Dockerfile
檔案
在 myMicroservice
目錄中,使用文字編輯器(推薦使用 Visual Studio Code)建立一個名為 Dockerfile
的檔案,包含以下內容:
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /src
COPY myMicroservice.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
WORKDIR /app
COPY --from=build /app .
ENTRYPOINT ["dotnet", "myMicroservice.dll"]
注意:確保將檔案命名為 Dockerfile(沒有副檔名),而不是 Dockerfile.txt 或其他名稱。
新增 .dockerignore
檔案(可選的)
.dockerignore
檔案可以減少 docker build
過程中使用的檔案集,檔案越少則構建越快。
在文字編輯器中建立一個名為 .dockerignore
的檔案(這個檔案類似於 .gitignore
檔案,如果你熟悉的話),包含以下內容:
Dockerfile
[b|B]in
[O|o]bj
建立 Docker 映象
執行以下命令:
docker build -t mymicroservice .
docker build
命令使用 Dockerfile
構建 Docker 映象。
- 引數
-t mymicroservice
告訴命令標記(或命名)映象為mymicroservice
。 - 最後一個引數告訴命令使用哪個目錄來查詢
Dockerfile
(.
指定當前目錄)。
譯者注:
如果是第一次在本機上構建基於mcr.microsoft.com/dotnet/core/sdk:3.1
和mcr.microsoft.com/dotnet/core/aspnet:3.1
的映象,構建mymicroservice
映象將會是一個漫長的過程,因為從官方 Docker 登錄檔拉取映象實在是太慢了!耐心等待,終會成功的,我已經實踐過了。
等待映象構建完成,可以執行下面的命令來檢視計算機上可用的所有映象的列表,包括您剛剛建立的 mymicroservice
映象。
docker images
執行 Docker 映象
您可以使用下面的命令在容器中執行您的應用:
docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice
可選地,您可以在單獨的新的命令提示符視窗中輸入下面的命令檢視正在執行的容器:
docker ps
在執行 docker run
命令後,您可以在瀏覽器中輸入 URL『http://localhost:3000/WeatherForecast』 來訪問正在容器中執行的應用程式。
恭喜!您已經成功地建立了一個可以使用 Docker 容器部署和縮放的小型、獨立的服務。
以上這些就是微服務的基本構建塊。