Linux服务器下利⽤Docker部署Core项⽬的全过程发布ASP.NET Core项⽬
和普通的项⽬发布⼀样,将项⽬发布到⽬标⽂件夹中
构建Dockerfile⽂件
在⽬标⽂件根⽬录新建Dockerfile⽂件(没有后缀)
FROM microsoft/dotnet//基于'microsoft/dotnet' 来构建镜像
COPY . /app //拷贝项⽬⽂件夹中的所有⽂件到docker容器中的app⽂件夹这⾥是两个参数
WORKDIR /app //设置⼯作⽬录为 '/app' ⽂件夹,即容器启动默认的⽂件夹
EXPOSE 80 //设置Docker容器对外暴露80端⼝
CMD ["dotnet", "Core.Web.dll"] //使⽤'dotnet Core. Web.dll'来运⾏应⽤程序
上传项⽬⽂件
docker进入容器1.将项⽬构建为镜像
将⽂件上传到Linux的www⽬录下,使⽤命令构建成镜像
docker build -t testcore . //-t 指定镜像名 . 表⽰Dockerfile所在⽬录
注意 dockerfile中基于microsoft/aspnetcore或microsoft/dotnet来构建镜像(dotnet>aspnetcore)需要以服务器上安装的镜像版本做区分
构建成功,在镜像中可以看到新建的镜像
2.将镜像发布为容器
docker run --name testapp -d -p 8000:80 -v /www:/app testcore
--name指定容器名称
-d 指定容器后台运⾏
-p 指定外部8000端⼝映射到容器80端⼝
-v 绑定数据卷/www到容器内的/app (本地⽬录:容器内⽬录)本地⽬录必须为绝对路径
testcore镜像名
3.查看容器是否是否处于运⾏状态,若启动失败显⽰为exit,可查看⽇志
docker ps -a //查看所有容器的运⾏状态
docker exec -it testapp bash //若容器正在运⾏,进⼊容器内部
docker logs testapp//若容器未运⾏,查看报错⽇志
4.请求⽹站查看⽹站是否运⾏成功
curl 0.0.0.0:8000
curl -s -D - localhost:8000 -o /dev/null //查看请求返回信息
最后查看防⽕墙端⼝开放情况,以及阿⾥云后台安全组端⼝开放情况(如果你是⽤的阿⾥云服务),再通过外⽹访问瞅瞅
5.更新代码
由于在创建容器的时候映射了数据卷,则当有静态⽂件更新的时候,会⾃动更新到容器内。
但是当有dll⽂件更新时,需要⼿动重启⼀下容器
docker restart testapp
以上,实现了将⼀个Asp.Net Core MVC项⽬发布到docker中的全过程。⽬前容器中只有⼀个dotnet镜像,通过地址访问⽹站实际上直接访问的Kestrel服务器。
⼀些额外的想法
Kestrel服务器只是⼀个轻量级的web服务器,并且不⽀持基于主机名的绑定(如果1台服务器部署了多个 ASP.NET Core 站点,每个站点需要使⽤不同的端⼝)
出于安全性考虑(包括但不限于适当的超时,⼤⼩的限制,以及并发连接限制等问题)需要在Kestrel和Internet之间加⼊⼀个反向代理服务器(IIS,Nginx或者Apache)
下⼀篇,描述⼀下我在使⽤nginx转发请求给Kestrel时遇到的问题。
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。