Linux上用Nginx發(fā)布Docker部署的.Net Core 應(yīng)用

前面谎碍,已經(jīng)在Linxu上對.Net Core兽叮、Nginx萄喳、Docker分別簡單的做了入門demo的練習(xí)卒稳,這篇文章是為的就是能把前面這些東西串起來運(yùn)用,感受一下容器化應(yīng)用從創(chuàng)建他巨、發(fā)布充坑、部署到用戶訪問的大體步驟,順便復(fù)習(xí)一下步驟闻蛀,鞏固理解匪傍。
正文開始。

1. 新建一個解決方案

前面一篇體驗(yàn).Net Core 應(yīng)用的demo里面都是直接新建的項(xiàng)目觉痛,用過宇宙第一IDE VS的同學(xué)應(yīng)該知道解決方案與項(xiàng)目關(guān)系役衡,簡單來說就是:一個解決方案可以包含多個項(xiàng)目。
新建一個目錄dotnet-docker用來專門存放解決方案薪棒,進(jìn)入后再新建一個解決方案目錄dockermvc手蝎,最后進(jìn)入解決方案目錄,分別新建解決方案和mvc項(xiàng)目:
這里和Visual Studio有所區(qū)別俐芯,VS里新建一個解決方案會同時新建一個解決方案文件夾和一個解決方案文件棵介,項(xiàng)目也是。但此處命令行 只會幫你新建文件吧史,不會新建目錄(Linux里習(xí)慣稱文件夾為目錄)邮辽,所以需要自己建,不然目錄結(jié)構(gòu)混亂

$ mkdir dotnet-docker
$ cd dotnet-docker
$ mkdir dockermvc
$ cd dockermvc
$ dotnet new sln
$ dotnet new mvc

敲完之后,利用ls命令查看一下目錄內(nèi)容:

ls
目錄結(jié)構(gòu)

解決方案目錄下分別是 解決方案文件項(xiàng)目目錄,項(xiàng)目目錄下的文件內(nèi)容與前面一文的Core mvc的demo一模一樣

2. 添加Docker配置文件

FROM microsoft/dotnet:2.1-sdk AS build
WORKDIR /app

# copy csproj and restore as distinct layers
COPY *.sln .
COPY dockermvc/*.csproj ./dockermvc/
RUN dotnet restore

# copy everything else and build app
COPY dockermvc/. ./dockermvc/
WORKDIR /app/dockermvc
RUN dotnet publish -c Release -o out

FROM microsoft/dotnet:2.1-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/dockermvc/out ./
ENTRYPOINT ["dotnet", "dockermvc.dll"]

3. 將.Net Core應(yīng)用打包成Docker可以加載的鏡像

-t mydockermvc:1.0表示生成名為mydockermvc且標(biāo)簽為1.0的docker鏡像吨述,最后面有個 **.** 表示當(dāng)前目錄

docker build -t mydockermvc:1.0 .

構(gòu)建鏡像成功如下:

構(gòu)建中

中間省略一部分程序集初始化...
成功

4. 運(yùn)行剛剛Core應(yīng)用生成的docker鏡像

沒有啟動docker時岩睁,Nginx服務(wù)雖然在監(jiān)聽80端口,但是沒有服務(wù)響應(yīng)內(nèi)容揣云,所以出現(xiàn)訪問失敗捕儒。


無法訪問服務(wù)

運(yùn)行docker鏡像mydockermvc:1.0 并命名運(yùn)行鏡像成功后的容器名為: mymvcdockerimgae

docker run -it --rm -p 5000:80 --name mymvcdockerimgae  mydockermvc:1.0

-p 5000:80是指定容器內(nèi)部使用網(wǎng)絡(luò)端口80 并且映射到我們使用主機(jī)上的5000端口,外網(wǎng)通過80端口的請求到了服務(wù)器主機(jī)邓夕。
所以整個請求流程是:外部訪問默認(rèn)80端口后刘莹,Nginx通過 讀取我們的自定義配置文件 將80端口的請求轉(zhuǎn)交到本主機(jī)的5000端口,請求到了5000端口焚刚,通過docker容器設(shè)置的映射關(guān)系点弯,請求繼續(xù)轉(zhuǎn)交到映射到了5000端口的mymvcdockerimgae容器,容器再在內(nèi)部讓與5000端口映射對應(yīng)的80端口服務(wù)程序響應(yīng)矿咕。

運(yùn)行鏡像后外部訪問Linux主機(jī)IP:

成功

容器內(nèi)部端口可自行指定蒲拉,如10002-p 5000:10002,但本例中 core程序默認(rèn)跑的是80端口痴腌,所以代碼得修改:

vi dotnet-docker/dockermvc/dockermvc/Program.cs

更新代碼為:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace dockermvc
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .UseUrls("http://*:10002")  //多一行指定端口的代碼
                .Build();
    }
}

重新生成鏡像:

$ docker build -t mydockermvc:2.0 .

運(yùn)行新生成的鏡像:

$ docker run -it --rm -p 5000:10002 --name mymvcdockerimgae  mydockermvc:2.0

外網(wǎng)測試可以看到仍然可以訪問。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末燃领,一起剝皮案震驚了整個濱河市士聪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌猛蔽,老刑警劉巖剥悟,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異曼库,居然都是意外死亡区岗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門毁枯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慈缔,“玉大人,你說我怎么就攤上這事种玛∶旰祝” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵赂韵,是天一觀的道長娱节。 經(jīng)常有香客問我,道長祭示,這世上最難降的妖魔是什么肄满? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上稠歉,老公的妹妹穿的比我還像新娘掰担。我一直安慰自己,他們只是感情好轧抗,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布恩敌。 她就那樣靜靜地躺著,像睡著了一般横媚。 火紅的嫁衣襯著肌膚如雪纠炮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天灯蝴,我揣著相機(jī)與錄音恢口,去河邊找鬼。 笑死穷躁,一個胖子當(dāng)著我的面吹牛耕肩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播问潭,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼猿诸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了狡忙?” 一聲冷哼從身側(cè)響起梳虽,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎灾茁,沒想到半個月后窜觉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡北专,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年禀挫,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片拓颓。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡语婴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出录粱,到底是詐尸還是另有隱情腻格,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布啥繁,位于F島的核電站菜职,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏旗闽。R本人自食惡果不足惜酬核,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一蜜另、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嫡意,春花似錦举瑰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旧巾,卻和暖如春耸序,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鲁猩。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工坎怪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人廓握。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓搅窿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親隙券。 傳聞我的和親對象是個殘疾皇子男应,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容