使用.NET Core+Docker 开发微服务
.NET Core發(fā)布很久了,因為近幾年主要使用java,所以還沒使用過.NET Core,今天正好有一個c#寫的demo,需要做成服務(wù),不想再轉(zhuǎn)成java來實現(xiàn),考慮使用.NET CORE來嘗下鮮,目標(biāo)是開發(fā)一個微服務(wù),然后部署到Docker swarm集群,供其他應(yīng)用調(diào)用。
環(huán)境準(zhǔn)備
下載.NET core的最新版本2.1.3, 安裝后打開命令行驗證:
出現(xiàn)下面的輸出,就代表安裝成功了
dotnetUsage: 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插件,方便管理擴展。
創(chuàng)建工程
使用dotnet new name創(chuàng)建項目,其中name是項目類型,具體如下:
開發(fā)微服務(wù),可以dotnet new mvc,創(chuàng)建一個mvc項目,然后VS CODE打開即可。
工程實現(xiàn)
實現(xiàn)就簡單了,按部就班coding就可以,和幾年前的.NET MVC沒有本質(zhì)區(qū)別:
新建一個APIController,添加一個方法:
然后刪掉默認(rèn)的模板文件,將HomeControler里的代碼清理掉,保留Index,減小包體積
public string Index(){ ? ? ?? ?return "api"; }
主要代碼OK!
Docker 鏡像編譯
按照官方指南,我們編寫Dockefile,主要是通過microsoft/dotnet:2.1-sdk AS build實現(xiàn)編譯,通過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 outFROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime WORKDIR /app COPY --from=build /app/out ./EXPOSE 80ENTRYPOINT ["dotnet", "appname.dll"]簡單分析:
build時,先dotnet restore
通過dotnet publish -c Release -o out 編譯release版本dll
然后構(gòu)建runtime,從build環(huán)境將out 目錄拷貝出來
然后EXPOSE 80端口,設(shè)置ENTRYPOINT 為‘dotnet appname.dll’
微服務(wù)CICD
首先是構(gòu)建,先將代碼放入SVN, 在Jenkins里新建自由模式項目,Build里使用Build/publish Docker Image:
然后部署,構(gòu)建好image后,通過shell執(zhí)行部署:
docker service rm ?pailitaoservice docker service create --name pailitaoservice ?--replicas 1 --publish 15001:80 192.168.86.8:5000/pailitaoservice最后,測試下服務(wù):
搞定收工!
原文鏈接:https://www.cnblogs.com/xiaoqi/p/donet-core-docker-microservice.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的使用.NET Core+Docker 开发微服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net Core应用框架Util介绍(
- 下一篇: Steeltoe之Config客户端篇