前幾篇文章介紹了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進行反向代理。