由于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;