您好,登錄后才能下訂單哦!
小編給大家分享一下.NET Core+Docker開發微服務的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
.NET Core發布很久了,因為近幾年主要使用java,所以還沒使用過.NET Core,今天正好有一個c#寫的demo,需要做成服務,不想再轉成java來實現,考慮使用.NET CORE來嘗下鮮,目標是開發一個微服務,然后部署到Docker swarm集群,供其他應用調用。
環境準備
下載.NET core的最新版本2.1.3, 安裝后打開命令行驗證:
出現下面的輸出,就代表安裝成功了
dotnet Usage: dotnet [options] Usage: dotnet [path-to-application] Options: -h|--help Display help. --info Display .NET Core 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.
然后是VS CODE安裝c#插件,
以及安裝nuget插件,方便管理擴展。
創建工程
使用dotnet new name創建項目,其中name是項目類型,具體如下:
C:\Users\jqpeng>dotnet new --help 使用情況: new [選項] 選項: -h, --help 顯示有關此命令的幫助。 -l, --list 列出包含指定名稱的模板。如果未指定名稱,請列出所有模板。 -n, --name 正在創建輸出的名稱。如果未指定任何名稱,將使用當前目錄的名稱。 -o, --output 要放置生成的輸出的位置。 -i, --install 安裝源或模板包。 -u, --uninstall 卸載一個源或模板包。 --nuget-source 指定在安裝期間要使用的 NuGet 源。 --type 基于可用的類型篩選模板。預定義的值為 "project"、"item" 或 "other"。 --force 強制生成內容,即使該內容會更改現有文件。 -lang, --language 根據語言篩選模板,并指定要創建的模板的語言。 模板 短名稱 語言 標記 ---------------------------------------------------------------------------------------------------------------------------- Console Application console [C#], F#, VB Common/Console Class library classlib [C#], F#, VB Common/Library Unit Test Project mstest [C#], F#, VB Test/MSTest NUnit 3 Test Project nunit [C#], F#, VB Test/NUnit NUnit 3 Test Item nunit-test [C#], F#, VB Test/NUnit xUnit Test Project xunit [C#], F#, VB Test/xUnit Razor Page page [C#] Web/ASP.NET MVC ViewImports viewimports [C#] Web/ASP.NET MVC ViewStart viewstart [C#] Web/ASP.NET ASP.NET Core Empty web [C#], F# Web/Empty ASP.NET Core Web App (Model-View-Controller) mvc [C#], F# Web/MVC ASP.NET Core Web App razor [C#] Web/MVC/Razor Pages ASP.NET Core with Angular angular [C#] Web/MVC/SPA ASP.NET Core with React.js react [C#] Web/MVC/SPA ASP.NET Core with React.js and Redux reactredux [C#] Web/MVC/SPA Razor Class Library razorclasslib [C#] Web/Razor/Library/Razor Class Library ASP.NET Core Web API webapi [C#], F# Web/WebAPI global.json file globaljson Config NuGet Config nugetconfig Config Web Config webconfig Config Solution File sln Solution Examples: dotnet new mvc --auth Individual dotnet new classlib --framework netcoreapp2.1 dotnet new --help
開發微服務,可以dotnet new mvc,創建一個mvc項目,然后VS CODE打開即可。
工程實現
實現就簡單了,按部就班coding就可以,和幾年前的.NET MVC沒有本質區別:
新建一個APIController,添加一個方法:
public JsonResult Search(string tfsid) { try { return Json(new { success = true, data = PailitaoApi.SearchByTFSId(tfsid) }); } catch (Exception ex) { Console.WriteLine(ex.Message); return Json(new { success = false, data = "Search failed!" }); ; } }
然后刪掉默認的模板文件,將HomeControler里的代碼清理掉,保留Index,減小包體積
public string Index() { return "api"; }
主要代碼OK!
Docker 鏡像編譯
按照官方指南,我們編寫Dockefile,主要是通過microsoft/dotnet:2.1-sdk AS build實現編譯,通過microsoft/dotnet:2.1-aspnetcore-runtime來運行,具體見下面,注意pailitao.dll需要修改成你項目的名稱:
FROM microsoft/dotnet:2.1-sdk AS build WORKDIR /app # copy csproj and restore as distinct layers COPY *.csproj ./ RUN dotnet restore # copy everything else and build app COPY . ./ RUN dotnet publish -c Release -o out FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime WORKDIR /app COPY --from=build /app/out ./ EXPOSE 80 ENTRYPOINT ["dotnet", "appname.dll"]
簡單分析:
build時,先dotnet restore
通過dotnet publish -c Release -o out 編譯release版本dll
然后構建runtime,從build環境將out 目錄拷貝出來
然后EXPOSE 80端口,設置ENTRYPOINT 為‘dotnet appname.dll'
微服務CICD
首先是構建,先將代碼放入SVN, 在Jenkins里新建自由模式項目,Build里使用Build/publish Docker Image:
然后部署,構建好image后,通過shell執行部署:
docker service rm pailitaoservice docker service create --name pailitaoservice --replicas 1 --publish 15001:80 192.168.86.8:5000/pailitaoservice
最后,測試下服務:
以上是“.NET Core+Docker開發微服務的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。