因为这段时间比较忙,同时也在抽时间将开发框架转移到 .net Core 上 所以写博客的时间就少了,这次我利用dockerfile成功将.net Core程序部署到了cenos7容器中,特抽时间把我的操作过程总结出来和大家分享。
首先要准备一个LINUX系统,可以是ubuntu,也可以是centos,我用的是虚拟机上装ubuntu14.04
然后安装docker,这个安装过程我就不说了,大家自己在网上搜索一下吧,大把,操作也简单。
我用的版本是
然后我建议先pull一个centos 7的镜像到本地,虽然直接在Dockerfile里面写指令也可以,但是那样执行起来会有点慢。
操作完后执行查看镜像命令,确认是否成功
这个镜像有196.8M,还好不算很大
因为这个镜像是很纯净的,没装任何东西,.net Core运行需要依赖两个库,所以我们要先把这两个库安装进去。
首先让我们启动一个容器
先安装libunwind
有让你选择的时候直接输入y就行了
看的这个就是安装完了。
然后再安装 ICU 一样的安装方式
这样就是安装完了。这时我们需要将这个修改后的容器保存为镜像,这样就不需要每次都这么操作了。
这时候再查看镜像就会发现这个镜像变大了,因为我们的组件都安装进去了,也提交成功了
好,到这里我们镜像的准备工作己经做好了,我们只要写个dockerfile然后把发布的程序一起运行起来就可以了。
首先我们先发布一个centos7的 .net Core事例代码
打开项目配制文件
加入运行配制
记得要把上面这里删除掉
然后打开CMD 运行命令
这样就发布成功了
我们把发布出来的代码上传到虚拟机上
现在准备工作差不多了,我们来看一下 Dockerfile,这个文件比较简单
基于我们之前准备好的镜像,将当前的文件复制到容器中,给文件夹权限,开放端口,运行程序
我们将这个文件放在我们发布的程序里面
我们在虚拟机上先进行到程序目录,然后运行命令
运行完以后我们就得到了我们最希望得到的镜像
我们运行它
这里做了端口映射,这样我在外部就可以访问它了
请忽略上面的这些代码,这些是我做测试用的。
可能大家不太了解的人会觉得我们走了这么多步骤就只是为了运行一个程序,是不是太麻烦了,这个东西好像也没什么用。
其实不然,我们之前的准备工作确实做的多了一点,但之后就只需要两个步骤了
以后你再发布程序只需要这两个命令就可以让它跑起来。
我们可以装这个镜像发布到公有库或是企业内部库,这样所有人都可以共享,你只需要把代码发布到一个地方,测试人员直接运行两个命令就可以跑你的程序,而且不会出现因为环境问题影响测试结果。
而且我们可以开启多个容器,可以本地测试负载均衡下程序运行情况等等,反正还有很多种运用,我也在摸索中,希望和大家一起进步。
最后补充一点,在ubuntu14.04容器下运行失败,一直报错
好像这个暂时没办法解决,只能等版本更新看能不能修复这个问题了,centos下是正常的。