.NET Core多平台项目模板eShopOnContainers编译手记
之前寫(xiě)了一個(gè)功能性的文件上傳asp.net core的小程序,加上點(diǎn)七七八八的東西,勉強(qiáng)能夠應(yīng)付了,打算學(xué)習(xí)一下微軟的官方.NET CORE微服務(wù)示例https://github.com/dotnet-architecture/eShopOnContainers。這個(gè)例子很全面地展現(xiàn)了微服務(wù)、docker以及.net core的魅力。里面使用了很多知識(shí)點(diǎn),比如單點(diǎn)登錄、API資源授權(quán),權(quán)限控制,用戶管理等,可以作為一個(gè)應(yīng)用開(kāi)發(fā)的學(xué)習(xí)模板。
重要的事情強(qiáng)調(diào)三遍:多平臺(tái)!多平臺(tái)!多平臺(tái)!
一個(gè)項(xiàng)目包含了.NET Core在多個(gè)目標(biāo)平臺(tái)上的應(yīng)用,包括ASP.NET CORE上的WEB SPA(單頁(yè)應(yīng)用)、傳統(tǒng)網(wǎng)頁(yè)以及移動(dòng)APP(基于Xamarin,同時(shí)支持Android、iOS、windows phone)。可以獨(dú)立部署或者直接部署到Azure上,非常贊!
具體分析結(jié)構(gòu)的文章已經(jīng)有不少了,我重點(diǎn)說(shuō)下安裝和編譯的幾個(gè)小坑,以便大家能夠更快地開(kāi)始。主要的參考鏈接是https://github.com/dotnet-architecture/eShopOnContainers/wiki/02.-Setting-eShopOnContainers-in-a-Visual-Studio-2017-environment,在vs2017上搭建windows服務(wù),跑個(gè)WEBSPA程序。
1.工具要求
-
源代碼
-
Windows 10 專業(yè)版以上(支持Hyper-V)
-
Docker for windows
-
Visual Studio 2017 15.3以上
-
npm(裝上NODE.JS)用于跑SPA程序
據(jù)說(shuō)VS2017 15.4版本在docker compose上有點(diǎn)問(wèn)題,但是我還是義無(wú)反顧的升級(jí)了,下文將講到這個(gè)坑。
1.下載代碼
git clone https://github.com/dotnet-architecture/eShopOnContainers.git我用的是dev分支,默認(rèn)就是。
2.配置Docker
在上面那個(gè)docker鏈接里面安裝docker for windows,選什么版本都沒(méi)關(guān)系,我選的穩(wěn)定版。直接一路next,如果之前沒(méi)啟用hyper-v,會(huì)提示重啟,照做就好。
然后是在Docker的設(shè)置->advanced里面,配置利用CPU核心數(shù)量和內(nèi)存大小,按照官方說(shuō)法,CPU分配3核心,內(nèi)存分配4G。由于我使用vs2017直接compose docker,所以,下一步就是共享磁盤(pán),在Shared drives里面配置共享的磁盤(pán),共享源文件所在的磁盤(pán)即可。
共享磁盤(pán)的時(shí)候,會(huì)提示輸入windows賬戶用戶名和密碼,如果windows賬戶沒(méi)有密碼的話,這步就點(diǎn)不過(guò)去了。
對(duì)本地開(kāi)發(fā)來(lái)說(shuō),不需要其他操作了,如果需要通過(guò)外部連接服務(wù)的話,那么還需要配置防火墻,打開(kāi)5100-5110這一段的端口。
3.Visual Studio 2017配置
如果全新安裝vs2017,需要以下幾個(gè)workloads:
-
ASP.NET和web開(kāi)發(fā)
-
.Net Core跨平臺(tái)開(kāi)發(fā)支持
不部署到Azure上,就不需要Azure開(kāi)發(fā)這個(gè)選項(xiàng)了。當(dāng)然,如果你需要開(kāi)發(fā)移動(dòng)端,或者桌面端的,甚至是UWP,那么對(duì)應(yīng)的勾上就行了。
有一個(gè)關(guān)鍵點(diǎn),如果勾上了移動(dòng)開(kāi)發(fā)的話,需要取消Google Android Emulator和Intel Hardware Accelerated Execution Manager,因?yàn)樗麄兒虷yper-V不兼容。
4.編譯SPA程序
下載的代碼有很多sln文件,我們測(cè)試WEBSPA,關(guān)注一個(gè)eShopOnContainers-ServicesAndWebApps.sln就可以了。我們找到eShopOnContainers\src\Web\WebSPA這個(gè)文件夾,先編譯SPA程序。
a.安裝npm
直接從https://nodejs.org/en/下載最新穩(wěn)定版node.js,一路next安裝,我安裝的是8.9.1LTS,記得勾上ADD TO PATH選項(xiàng)。
b.配置vs2017 npm路徑
在工具->選項(xiàng)->項(xiàng)目與解決方案->Web package management->外部web工具里面,加一行你剛剛安裝的node的路徑(如果是一路next的話,那么就是C:\Program Files\nodejs)。然后調(diào)整順序,注意新增加的要在第二行,要在WEB\External的上面。
c.編譯SPA程序
運(yùn)行powerhsell,定位到eShopOnContainers\src\Web\WebSPA這個(gè)文件夾。
輸入npm install回車,等一會(huì)兒就好了。然后按照教程,輸入回車。
錯(cuò)誤,提示找不到node-sass,還好文檔里面有,如果不行了,輸入npm rebuild node-sass回車
沒(méi)有提示直接結(jié)束了,那么繼續(xù)npm run build:prod
額。。。和說(shuō)好的劇本不一樣啊。是不是node-sass有點(diǎn)問(wèn)題了,那我安裝一下總行了吧。
還是不行,npm,你怕嗎?
搜索了一下這個(gè)錯(cuò)誤Cannot read property '0' of undefined,找到了一個(gè)https://github.com/npm/npm/issues/17858,提示應(yīng)該是npm版本有bug的問(wèn)題,我運(yùn)行的的npm版本是5.5.1的(運(yùn)行npm -v可以查看),在bug沒(méi)修復(fù)前,臨時(shí)解決方案:
npm install -g npm@5.2.0
還是不行。應(yīng)該是剛剛版本install之后不兼容造成了,從npm install開(kāi)始從頭來(lái)一遍就好了。如果npm run build:prod正常結(jié)束了,就說(shuō)明OK了。
5. debug docker
上面工作做完了,用vs2017打開(kāi)eShopOnContainers-ServicesAndWebApps.sln文件,右鍵解決方案管理器里面的docker-compose,點(diǎn)設(shè)為啟動(dòng)項(xiàng)目。
F5,開(kāi)始編譯。然后等了一會(huì)兒。
提示很多錯(cuò)誤,有配置沒(méi)有值?啥,還要配置!
定位源文件夾根目錄下的.env文件。里面有很多配置項(xiàng),如果不用azure的話,保持默認(rèn)就可以了,但是最后的這個(gè)一定要設(shè)置true或者false。
重來(lái),發(fā)現(xiàn)還是不行。最后一個(gè)error:invalid reference format還是存在。這就是vs2017 15.4的坑了。
參考http://www.cnblogs.com/dadream/p/7800104.html,定位源文件夾,刪除docker-compose.yml中所有鏡像的?':${TAG:-latest}'?后綴。
重新F5,編譯通過(guò)了,但是docker要下載各種鏡像,是更漫長(zhǎng)的等待。
最后出現(xiàn)這個(gè)東西,說(shuō)明成功了。再仔細(xì)研究吧~HAVE FUN!
原文地址:http://www.cnblogs.com/podolski/p/7819615.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的.NET Core多平台项目模板eShopOnContainers编译手记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用混合云的SQL Server
- 下一篇: asp.net core WebAPI实