丙申年把真假美猴王囚禁在容器中跑 asp.net Core 1.0¶
警告
您当前查看的页面是未经授权的转载!
如果当前版本排版错误,请前往查看最新版本:http://www.VEVb.com/qin-nz/p/aspnetcore-run-on-mono-in-year-of-monkey.html
提示
更新时间:2016年02月07日。
各位程序媛/程序猿们,猴年快乐。相信不少媛/猿都是被标题吸引来的,那我我先解释下标题。
提示
本文是一篇半科普文,不对技术细节进行深入探究。
标题解释¶
ASP.NET Core 1.0¶
ASP.NET Core 1.0 是一个是跨平台且开源的用于开发网站/Web API 的框架,原名 ASP.NET 5 (再早期称作 ASP.NET vNext),但并不是 ASP.NET 4.6 的升级版;而是从零开始的版本。
ASP.NET Core 1.0 把所有的功能和模块都进行了拆分,进行了彻底解耦。源代可以在 Github ASP.NET 上找到。
给猴子建一个家¶
首先你需要安装 Docker (Linux) 的运行环境,也就是图中蓝色的部分。
啊,这个好麻烦啊……如果你和我一样有 Microsoft Azure 的订阅,直接创建个 Ubuntu on Docker 的虚拟机来的更方便。
没有的话,请参考官网文档吧……
在 Windows 上安装 Docker
在 Mac OS 上安装 Docker
提示
Docker 不只有Linux版,也有Windows版(目前是预览版),也就是说,如果想要安装下面两张图的方式安装也可以。
只不过,真用了Windows,一般也就用完整的 .NET Framework 了,而不用 mono
。
一起动手囚禁一只猴子吧¶
接下来,有了容器,就可以弄只猴子了。
微软已经制作好了一个容器,并且预置了一只猴子,并上传到了 Docker Hub ,我们可以直接拿来用。
或者,我们可以从Github上弄到培育猴子的代码来自己生成猴子。
在Docker(Linux)中安装Mono及ASP.NET运行环境
在Docker(Windows)中安装Mono及ASP.NET运行环境
创建空的 ASP.NET Core 网站¶
首先,你需要一个已经完成的 ASP.NET Core 1.0 应用。
对于Windows用户,直接用 vs2015 创建一个新的 ASP.NET Core (模板名称为ASP.NET 5) Web应用即可。
Mac OS 用户,可以参考 在 Mac OS 上创建的 ASP.NET Core 1.0 应用 的前半部分。
给容器里放点吃的¶
刚刚从 Docker Hub 下载的容器,里面并没有我们的应用,就只有一只猴子而已,并没什么卵用。现在我们准备把刚刚创建的应用加入到容器中。
- 创建Dockerfile
如果你在Mac OS上使用了 yo aspnet
来生成的项目,那么你已经有了Dockerfile;否则你需要自己在项目目录创建一个文件名为Dockerfile的文件。
FROM microsoft/aspnet:1.0.0-rc1-update1COPY . /appWORKDIR /appRUN ["dnu", "restore"]EXPOSE 5000/tcpENTRYPOINT ["dnx", "-p", "project.json", "web"]
解释一下每一行。
- 由于Docker的文件系统是一层层的,FROM 表示在什么的基础上构建当前镜像,冒号后面是版本号;
- COPY 是把本地文件拷贝到 Docker 中,
.
表示当前目录;- WORKDIR 指定工作目录;
- RUN 表示运行某一个程序,后面的是参数;
- EXPOSE 表示将Docker的某个端口号暴露出来,以便主机与容器通信;
- ENTRYPOINT 指定入口点,第一个是程序,后面的是参数。
- 构建项目
docker build .
查看构建完成的镜像,其中IMAGE ID是构建完成镜像的标识符
docker images
给镜像起个名字
docker tag {IMAGE ID} qinnz/wukong
小技巧
镜像相当于容器的底片,我们可以用镜像创建出许多一模一样的容器。
让真假美猴王同时给我们跑 ASP.NET Core¶
好了,你已经有了一个镜像,需要把它运行起来,当然你可以运行多个实例(不过不能绑定同一个端口)。
docker run --name monkey_king -d -p 80:5000 qinnz/wukongdocker run --name his_dobule -d -p 81:5000 {IMAGE ID}
我们在后台( -d
)启动了2个实例(一个是真猴王,一个是假猴王),分别把这两个容器(可以使用 Tag 或 IMAGE ID来标识)的5000端口映射到宿主机的80和81两个端口了。
至此,我们就创建一个包含Mono运行环境的Docker容器,然后让它给你运行 ASP.NET Core 1.0 的程序。
更多资源¶
ASP.NET 官方文档
在 Mac OS 上创建并运行 ASP.NET Core 1.0 网站
在 Mac OS X 上创建的 .NET 命令行程序访问数据库 (使用Entity Framework 7 )
Docker
Docker 文档
声明
丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0 由 勤奋的小孩 创作,采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 http://space.VEVb.com/msg/send/qin-nz 处获得。