從.netcore開源項目來看,eshoponcontainers來說,它的部署是跨平臺的,可以部署在linux,linux上,在linux上運行它也可以寫一些集成的小腳本,這是微信工程師為我們提供一個部署發布方案的sh腳本
#!/bin/bash declare?-a?projectList=(????'../src/Services/Catalog/Catalog.API' ????'../src/Services/Basket/Basket.API' ????'../src/Services/Ordering/Ordering.API' ????'../src/Services/Identity/Identity.API' ????'../src/Web/WebMVC' ????'../src/Web/WebSPA' ????'../src/Web/WebStatus') #?Build?SPA?app #?pushd?$(pwd)../src/Web/WebSPA #?npm?run?build:prodfor?project?in?"${projectList[@]}"do ????echo?-e?"e[33mWorking?on?$(pwd)/$project" ????echo?-e?"e[33mtRemoving?old?publish?output" ????pushd?$(pwd)/$project ????rm?-rf?obj/Docker/publish ????echo?-e?"e[33mtRestoring?project" ????dotnet?restore ????echo?-e?"e[33mtBuilding?and?publishing?projects" ????dotnet?publish?-o?obj/Docker/publish ????popd done #?remove?old?docker?images: images=$(docker?images?--filter=reference="eshop/*"?-q)if?[?-n?"$images"?];?then ????docker?rm?$(docker?ps?-a?-q)?-f ????echo?"Deleting?eShop?images?in?local?Docker?repo" ????echo?$images ????docker?rmi?$(docker?images?--filter=reference="eshop/*"?-q)?-f fi #?No?need?to?build?the?images,?docker?build?or?docker?compose?will #?do?that?using?the?images?and?containers?defined?in?the?docker-compose.yml?file.
上面的解決主要體現了發布時用的一些命令,如linux,遍歷,條件語句,linux文件,發布語句等,我自己寫練了練手
declare?-a?arr=(12345)for?i?in?"${arr[@]}"do?if?[?$i?==?2?] then ???echo?"a?is?equal?to?2"else ???echo?"a?is?not?equal?to?2"fi done declare?-a?projectList=(????'../src/Services/Catalog/Catalog.API' ????'../src/Services/Basket/Basket.API' ????'../src/Services/Ordering/Ordering.API' ????'../src/Services/Identity/Identity.API' ????'../src/Web/WebMVC' ????'../src/Web/WebSPA' ????'../src/Web/WebStatus')for?project?in?"${projectList[@]}"do ????echo?-e?"e[33m工作在目錄?$(pwd)/$project" ????echo?-e?"e[33mtRemoving?old?publish?output"done
大家在寫SH文件時要注意,linux與windows的回車符不一樣,我們可以下載notepad++這個工具來進行轉碼。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END