丙申年把真假美猴王囚禁在容器中跑 asp.net Core 1.0?
警告
您當前查看的頁面是未經授權的轉載!
如果當前版本排版錯誤,請前往查看最新版本:http://www.companysz.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 處獲得。