前几篇文章介绍了Liunx下的环境搭建,今天来分享一下.Net Core在Liunx上的部署。web
我采用的方案是使用Dokcer做为运行虚拟机,Nginx做为Http服务器来进行反向代理,你能够理解为Docker就是程序的运行环境,而Nginx就是以前用的IIS。docker
文章分红两篇,第一篇写Docker部署,第二篇写Nginx代理。vim
1、编写Dockerfilebash
Dockerfile中记录了咱们的程序在Docker环境中的各类配置服务器
FROM microsoft/dotnet #FROM 指定功能所需的基础镜像,必须是第一条指令,咱们这里指定aspnetcore WORKDIR /web #定义你工做目录的名字 COPY . ./ #COPY 程序所在本地目录 容器目录 例如:COPY ${source:-bin/publish} ./hello 把source所在的目录下的,bin/publish子目录的内容复制到容器的hello目录 ENTRYPOINT ["dotnet", "CZKJ.CMS.Web.dll"] #运行dotnet命令,参数是你的程序集的入口dll--就是你的Web程序dll
配置还有不少例如EXPOSE能够指定对外开放的端口,若是不指定就是默认80,以上几个配置足够通常的.NetCore程序使用,以上配置copy下来能够直接使用只须要更改最下面一行的程序集名字就好。
写好Dockerfile后把Dockerfile放到你的包根目录下,文件不要加后缀名就只叫:Dockerfile工具
2、生成镜像ui
使用WinScp把你的程序集放到Liunx服务器上,WinScp是一个很好用工具,推荐下载并且免费。spa
而后远程连接到你的Liunx服务器,推荐一个小工具:Putty很好用的小工具代理
CD到刚才上传上来的目录中:cd /website/PublishOutput 注意要到文件夹里rest
在这里运行Docker 命令:docker build -t <要生成的镜像的名称> . (注意,结尾有个点,这个点是Dockerfile的路径,由于Dockerfile如今就在当前目录下,因此打个点就行,-t 参数后的镜像名字不须要打<>)
例如: dcoerk build -t demo .
Docker 会根据刚才配置的Dockerfile生成镜像,最后出现Successfully表示成功。
3、启动实例
上一步咱们已经制做好了镜像,如今咱们把镜像放到Docker里,让它跑起来。
执行Docker 命令:docker run -d --rm -p 5000:80 --name <实例名称> <镜像名称>
-d会在启动成功后输出镜像的惟一标识码, --rm 会判断若是存在同名实例会删除替换 -p指定程序运行端口 宿主端口:容器端口 注:由于上文中没有指定EXPOSE因此容器的端口是80 --name 参数后的实例名和镜像名不须要带<>
以下图,我把服务器的5003端口指定到了容器的80端口,如今访问5003就会访问到DEMO程序
docker ps 查看全部已经部署的实例
上面的这个命令所部署的实例会在容器重启或者服务器重启后自动卸载,也就是说一旦重启Docker服务或者镜像以后就这个实例就不存在了,须要从新Docker run,以下图,重启服务后刚才部署的实例没有了
重启后自动部署使用这条命令:docker run -d --restart=always -p 5000:80 --name <实例名> <镜像名> 注:--restart 和 --rm 冲突,只能选择一个
以下图,使用--restart=always参数后重启将不影响实例
4、进入镜像进行文件的查看更改
执行命令 docker ps 查看现有实例,而后执行命令 docker exec -it <CONTAINER ID> /bin/bash
以下图,这样咱们就进入了镜像里面,这个web就是在Dockerfile里定义的那个WORKDIR参数
在镜像里若是想使用vim看日志或者改配置的话,须要本身安装,由于镜像里是没有vim的能够考虑使用cat.
若是要安装的话执行如下命令:apt-get update 执行完以后执行 apt-get install vim
安装完成后就可使用vim了
5、中止、删除实例和镜像
中止命令:docker stop 实例ID
如图,咱们中止了刚才启动的实例
删除已经生成的镜像命令
docker images 查看全部的镜像
docker rmi 镜像ID 删除指定镜像
删除前须要中止镜像,不然会删除失败,以下图,首先要中止镜像,而后删除镜像,否则会报错
至此,.NET Core在Docker中部署完毕,下一篇介绍使用Nginx进行反向代理。