最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

.Net項(xiàng)目在Docker容器中開發(fā)部署

 更新時(shí)間:2022年04月10日 16:49:04   作者:溫暖如太陽(yáng)  
這篇文章介紹了.Net項(xiàng)目在Docker容器中開發(fā)部署的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

.NET多年以前已經(jīng)開始支持Docker,但由于國(guó)內(nèi).net現(xiàn)狀,生產(chǎn)過(guò)程中幾乎用不到docker支持,趁著有點(diǎn)時(shí)間搗鼓下。

先期工作

1、首先安裝Docker Desktop

2、安裝Visual Studio

創(chuàng)建項(xiàng)目

使用VS分別創(chuàng)建一個(gè)ASP.NET Core Api(WebApplication1)與 ASP.NET Core 應(yīng)用(WebApplication2)

如果項(xiàng)目已經(jīng)存在,可以選中項(xiàng)目,右鍵點(diǎn)擊->選擇添加Docker支持。

在彈出對(duì)話框中選擇Linux。

項(xiàng)目支持docker后,會(huì)在項(xiàng)目下生成一個(gè)Dockerfile文件(用來(lái)構(gòu)建Docker鏡像的構(gòu)建文件)

內(nèi)容如下:

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#使用“小型”僅運(yùn)行時(shí)基礎(chǔ)映像開始一個(gè)階段,將其稱為“基礎(chǔ)”,以供參考
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
# 在映像中創(chuàng)建 /app 目錄 。
WORKDIR /app
# 公開端口 80 。
EXPOSE 80
#使用“大型”映像開始用于生成/發(fā)布的新階段。將其稱為“生成” ,以供參考。
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
#在映像中創(chuàng)建目錄 /src 。
WORKDIR /src
#復(fù)制引用的 .csproj 項(xiàng)目文件,以便之后能夠還原包 。
COPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]
#還原項(xiàng)目和引用項(xiàng)目的包 。
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
#將解決方案的所有目錄樹(.dockerignore 文件中包含的文件/目錄除外)復(fù)制到映像中的 /src/項(xiàng)目 目錄 。
WORKDIR "/src/WebApplication1"
#生成項(xiàng)目(和其他項(xiàng)目依賴項(xiàng))并輸出到映像中的 /app/build 目錄 。
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build
 
#開始一個(gè)從“生成”繼續(xù)的新階段。將它稱為“發(fā)布” 以進(jìn)行引用。
FROM build AS publish
 
# 發(fā)布項(xiàng)目(和依賴項(xiàng))并輸出到映像中的 /app/publish 目錄 。
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish
 
# 開始一個(gè)從“基礎(chǔ)”繼續(xù)的新階段,并將其稱為“最終”
FROM base AS final
#將當(dāng)前目錄更改為 /app
WORKDIR /app
 
#將 /app 目錄從階段“發(fā)布”復(fù)制到當(dāng)前目錄
COPY --from=publish /app/publish .
 
#定義啟動(dòng)容器時(shí)要運(yùn)行的命令
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

以上說(shuō)明參考.net官方文檔,機(jī)器翻譯不是很友好,但結(jié)合命令應(yīng)該能看懂。

單容器運(yùn)行

1、VS啟動(dòng)docker調(diào)試:

2、使用命令生成與啟動(dòng)鏡像

(1)編譯鏡像

docker build -f .\WebApplication1\Dockerfile -t webapi .
#此處注意Dockerfile文件所在的目錄

(2)生成容器

docker run --name webapi -d -p 8060:80 api
 
--name 容器名
-d 后臺(tái)運(yùn)行
-p 端口映射

此時(shí)訪問(wèn)接口:localhost:8060

返回值:

[
    {
        "date": "2022-03-17T09:25:15.9478769+08:00",
        "temperatureC": -2,
        "temperatureF": 29,
        "summary": "Freezing"
    },
    {
        "date": "2022-03-18T09:25:15.9490679+08:00",
        "temperatureC": -7,
        "temperatureF": 20,
        "summary": "Bracing"
    },
    {
        "date": "2022-03-19T09:25:15.9490738+08:00",
        "temperatureC": 15,
        "temperatureF": 58,
        "summary": "Warm"
    },
    {
        "date": "2022-03-20T09:25:15.9490742+08:00",
        "temperatureC": 26,
        "temperatureF": 78,
        "summary": "Mild"
    },
    {
        "date": "2022-03-21T09:25:15.9490743+08:00",
        "temperatureC": -15,
        "temperatureF": 6,
        "summary": "Chilly"
    }
]

容器運(yùn)行

1、右鍵點(diǎn)擊WebApplication1應(yīng)用,選擇添加“容器業(yè)務(wù)流程協(xié)調(diào)程序支持”

選擇:“Linux”。

添加完成后,解決方案中會(huì)自動(dòng)生成:docker-compose項(xiàng)目,

主要包含:docker-compose.yml文件,.dockerignore文件。

  • .dockerignore 文件包含你不希望 Docker 在容器中包含的文件類型和擴(kuò)展名。這些文件通常與開發(fā)環(huán)境和源代碼管理相關(guān)聯(lián),并不屬于正在開發(fā)的應(yīng)用或服務(wù)。

  •  docker-compose.yml是docker-compose的配置文件,docker-compose是docker提供的一個(gè)命令行工具,可以用于定義和運(yùn)行多容器組成的應(yīng)用。

  docker-compose.yml中生成的內(nèi)容:

version: '3.4'
 services:
   webapplication1:
    image: ${DOCKER_REGISTRY-}webapplication1
    build:
      context: .
      dockerfile: WebApplication1/Dockerfile

同樣的操作為:WebApplication2添加“容器業(yè)務(wù)流程協(xié)調(diào)程序支持”

最終docker-compose.yml內(nèi)容為:

version: '3.4'
 
services:
  webapplication2:
    image: ${DOCKER_REGISTRY-}webapplication2
    build:
      context: .
      dockerfile: WebApplication2/Dockerfile
 
  webapplication1:
    image: ${DOCKER_REGISTRY-}webapplication1
    build:
      context: .
      dockerfile: WebApplication1/Dockerfile

2、修改WebApplication2的HomeController:

public async Task<IActionResult> Index()
{
  ViewData["Message"] = "Hello from webfrontend";
 
  using (var client = new System.Net.Http.HttpClient())
  {
    var request = new System.Net.Http.HttpRequestMessage();
    request.RequestUri = new Uri("http://WebApplication1/WeatherForecast");
    var response = await client.SendAsync(request);
    ViewData["Message"] += " and " + await response.Content.ReadAsStringAsync();
  }
  return View();
}
//因?yàn)?docker compose 在其自己的網(wǎng)絡(luò)中設(shè)置主機(jī)名,
//以便服務(wù)名作為主機(jī)名顯示給其他服務(wù),
//所以這里使用的是主機(jī)名請(qǐng)求。
request.RequestUri = new Uri("http://WebApplication1/WeatherForecast");

3、解決方案的啟動(dòng)項(xiàng)目設(shè)置為 docker-compose

4、管理Docker Compose啟動(dòng)項(xiàng)

配置完成后會(huì)將配置保存在docker-compose 項(xiàng)目中的launchSettings.json中:

{
  "profiles": {
    "Docker Compose": {
      "commandName": "DockerCompose",
      "composeLaunchAction": "LaunchBrowser",
      "composeLaunchServiceName": "webapplication2",
      "composeLaunchUrl": "{Scheme}://localhost:{ServicePort}",
      "commandVersion": "1.0",
      "serviceActions": {
        "webapplication1": "StartWithoutDebugging",
        "webapplication2": "StartDebugging"
      }
    }
  }
}

5、F5啟動(dòng)項(xiàng)目

常見(jiàn)問(wèn)題

首次啟動(dòng)可能會(huì)出現(xiàn)錯(cuò)誤:

“error CTC1023: Dockerfile“...\Dockerfile”的調(diào)試程序路徑“C:\Users\Administrator\vsdbg\vs2017u5”無(wú)效?!?/pre>

解決辦法:手動(dòng)下載.zip包,如果瀏覽器下載太慢,可以考慮使用下載工具

https://vsdebugger.azureedge.net/vsdbg-17-0-10712-2/vsdbg-linux-x64.zip #其中17-0-10712-2(其中 17.0.10712.2 “.”替換成“-”)
https://vsdebugger.azureedge.net/vsdbg-17-0-10712-2/vsdbg-linux-musl-x64.zip #其中17-0-10712-2(其中 17.0.10712.2 “.”替換成“-”)
如果其他版本的,可以參考該方式,拼接URL下載

以上兩個(gè)包下載完畢后,按照以下步驟操作

1、將vsdbg-linux-x64.zip 解壓到 %USERPROFILE%\vsdbg\vs2017u5 目錄  (vs2017)
2、%USERPROFILE%\vsdbg\vs2017u5 目錄,添加兩個(gè)文件
success_rid.txt 內(nèi)容填寫:linux-x64
success_version.txt 內(nèi)容填寫:17.0.10712.2


3、將vsdbg-linux-musl-x64.zip 解壓到 %USERPROFILE%\\vsdbg\vs2017u5\linux-musl-x64 目錄 (vs2017,其他版本參考相似路徑)
4、%USERPROFILE%\vsdbg\vs2017u5\linux-musl-x64 目錄,添加兩個(gè)文件
success_rid.txt 內(nèi)容填寫:linux-musl-x64
success_version.txt 內(nèi)容填寫:17.0.10712.2

到此,項(xiàng)目算是跑起來(lái)了。

到此這篇關(guān)于.Net項(xiàng)目在Docker容器中開發(fā)部署的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ubuntu16.4下用jexus部署ASP.NET Core環(huán)境

    ubuntu16.4下用jexus部署ASP.NET Core環(huán)境

    這篇文章主要以圖文結(jié)合的方式介紹了ubuntu16.4下ASP.NET Core部署環(huán)境搭建步驟,感興趣的小伙伴們可以參考一下
    2016-07-07
  • 大早上更新了Visual Studio 2019  試用一下

    大早上更新了Visual Studio 2019 試用一下

    本文給大家分享一篇關(guān)于Visual Studio 2019 的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒,需要的朋友可以參考下
    2019-04-04
  • 管理員登錄設(shè)計(jì)(第7節(jié))

    管理員登錄設(shè)計(jì)(第7節(jié))

    這篇文章主要內(nèi)容是管理員登錄設(shè)計(jì),通過(guò)設(shè)計(jì)了解命名空間的概念,掌握命名控件的的構(gòu)建和使用以及數(shù)據(jù)的讀操作,需要的朋友可以參考下
    2015-08-08
  • c#委托與事件(詳解)

    c#委托與事件(詳解)

    本文中,我將通過(guò)兩個(gè)范例由淺入深地講述什么是委托、為什么要使用委托、事件的由來(lái)、.Net Framework中的委托和事件、委托和事件對(duì)Observer設(shè)計(jì)模式的意義,對(duì)它們的中間代碼也做了討論
    2012-12-12
  • ASP.NET的適配器設(shè)計(jì)模式(Adapter)應(yīng)用詳解

    ASP.NET的適配器設(shè)計(jì)模式(Adapter)應(yīng)用詳解

    有關(guān)設(shè)計(jì)模式的適配器模式(Adapter)確實(shí)不是很好理解理解,接下來(lái)將做一個(gè)簡(jiǎn)單的例子簡(jiǎn)要說(shuō)明下,感興趣的朋友可不要錯(cuò)過(guò)了哈,希望本文可以幫助到你更好的理解適配器設(shè)計(jì)模式
    2013-02-02
  • ASP.NET 恢復(fù)備份Sqlserver實(shí)現(xiàn)代碼

    ASP.NET 恢復(fù)備份Sqlserver實(shí)現(xiàn)代碼

    在線恢復(fù)和備份SQL Server的代碼,需要的朋友可以參考下。
    2010-04-04
  • 淺談Asp.Net母版頁(yè)的相關(guān)知識(shí)

    淺談Asp.Net母版頁(yè)的相關(guān)知識(shí)

    母版頁(yè)的使用與普通頁(yè)面類似,可以在其中放置文件或者圖形、任何的HTML控件和Web控件,后置代碼等,這篇文章主要介紹了淺談Asp.Net母版頁(yè)的相關(guān)知識(shí),感興趣的小伙伴們可以參考一下
    2018-11-11
  • .NET工廠方法模式講解

    .NET工廠方法模式講解

    這篇文章主要為大家詳細(xì)介紹了ASP.NET工廠方法模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • ASP.net處理XML數(shù)據(jù)實(shí)例淺析

    ASP.net處理XML數(shù)據(jù)實(shí)例淺析

    這篇文章主要介紹了ASP.net處理XML數(shù)據(jù)實(shí)例淺析,分析了XML的原理與用法,并以實(shí)例形式講述了asp.net處理XML數(shù)據(jù)的方法,需要的朋友可以參考下
    2014-10-10
  • C#中的委托和事件學(xué)習(xí)(續(xù))

    C#中的委托和事件學(xué)習(xí)(續(xù))

    如果你看過(guò)了 C#中的委托和事件 一文,我想你對(duì)委托和事件已經(jīng)有了一個(gè)基本的認(rèn)識(shí)。但那些遠(yuǎn)不是委托和事件的全部?jī)?nèi)容,還有很多的地方?jīng)]有涉及。
    2008-09-09

最新評(píng)論

金秀| 河曲县| 荥经县| 东兰县| 翁源县| 鸡西市| 亚东县| 兴城市| 金堂县| 邯郸县| 偏关县| 莱芜市| 广南县| 忻州市| 容城县| 清水河县| 沙洋县| 察隅县| 普兰店市| 丽水市| 资源县| 军事| 沧源| 贡山| 石屏县| 比如县| 安龙县| 且末县| 玉屏| 蓬安县| 万载县| 赣州市| 中牟县| 宜都市| 乐山市| 太湖县| 乌拉特中旗| 邛崃市| 孟州市| 宽甸| 水富县|