由於vs2017在windows下配docker支持,要開啓docker for windows版本的服務,挺重的,資源消耗頗大,並且最坑爹的是發佈並不支持直接發成docker包,仍是要你本身去用dockerfile來創建鏡像,我這裏不把項目文件打包進docker鏡像,而是用-v方式掛載相關目錄進docker來運行,這樣搭配一些分佈式存儲方案其實能夠節省很多打包麻煩和存儲空間的;linux
windows內:web
作一個vs2017(15.8版本)新建.net core項目 asp.net core web應用程序api項目模板 asp.net core2.1 不選docker支持(選了調試比較重,能夠以後添加用於linux docker的調試,不過若是.net core跨平臺性支持夠好其實根本不須要的) https開着,不過默認發佈到linux的時候最後好像都是http;docker
新建得項目WebApplication1,調試的話json
https://localhost:5001/api/values會返回一個json文件內容是windows
["value1","value2"];centos
發佈(新建配置文件):api
發佈方法:選文件系統;app
設置:Release;框架
目標框架:我這時候暫時是 netcoreapp2.1;asp.net
部署模式:選獨立,發佈完,總體文件較多,較大,我目前實測大概是93mb+;
選框架依賴,發佈完,總體文件數不多,實測不到2mb大;
由於是發佈到centos7.x docker 因此目標運動時:linux-x64;
發佈完默認文件在項目文件夾\bin\Release\netcoreapp2.1\publish下;
傳給linux方法多樣而我喜歡開啓本地windows的iis功能,而後將publish下文件打包成publish.zip,而後複製到iis目錄下,默認是C:\inetpub\wwwroot;
linux:
將windows發佈目錄publish下的文件都打包,傳送到linux下,解壓到/dotnet下:
curl -O http://192.168.1.4/publish.zip;
安裝解壓zip的庫:
yum makecache fast;yum install unzip -y;
解壓到相關目錄:
unzip -n -d /dotnet publish.zip;
部署模式選獨立:
chmod u+x /dotnet/WebApplication1
docker run -dit --restart=always --name=dotnet -p 80:80 -v /dotnet:/dotnet --hostname dotnet microsoft/dotnet:2.2-runtime /dotnet/WebApplication1;
microsoft/dotnet:2.2-runtime鏡像大小180.5mb;
加上項目文件93mb+,共273mb+大;
部署模式選框架依賴:
docker run -dit --restart=always --name=dotnet -p 80:80 -v /dotnet:/dotnet --hostname dotnet microsoft/dotnet:2.2-aspnetcore-runtime dotnet /dotnet/WebApplication1.dll;
microsoft/dotnet:2.2-aspnetcore-runtime鏡像大小257.8mb;
加上項目文件2mb-,共259mb大;
個人建議是選擇第二種方式,包比較小哦,並且我看了vs2017給項目添加的docker支持裏的dockerfile的from底包,就是aspnetcore-runtime;