主頁 > .NET開發 > [筆記]使用Docker部署.NET Core應用程式

[筆記]使用Docker部署.NET Core應用程式

2020-09-18 17:29:52 .NET開發

  大概快有一年的時間沒有碰過docker了,理由很簡單,基本上都是在IIS上部署,看到很多大佬都開始Devops持續化集成了,還有就是用Linux守護行程很惡心,哈哈,但相對來說成本會更高,但對于大型團隊來說還是不錯的,這不?不想被大伙甩下,哈哈,趕緊撈回來點丟下的知識,這篇文章就算是對我自己的筆記吧...Docker 中 有EE 和 CE 兩個版本,其中EE是開源的,CE是閉源的,

在Linux中安裝Docker容器

首先我們需要檢查Linux內核是否大于3.1.0,通過該命令查看,

[root@iZenarrdqnvpc4Z ~]# uname -r
3.10.0-1062.1.2.el7.x86_64

隨后我們安裝docker必要的一些必要的工具,可以提前安裝,

yum install -y yum-utils device-mapper-persistent-data lvm2

現在可以直接裝Docker了,使用命令如下

sudo wget -qO- https://get.docker.com | sh

隨后檢查docker版本,看看是否安裝成功?

[root@iZenarrdqnvpc4Z ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.5
 API version:       1.40
 Go version:        go1.12.12
 Git commit:        633a0ea
 Built:             Wed Nov 13 07:25:41 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

現在想要使用docker image 以及 docker ps 等命令還不可以,因為你還沒有start docker 服務,使用這倆命令來開啟與關閉docker服務,

start docker.service  //開啟
stop docker.service   //關閉

由于我是用的阿里服務器,它給我提供了鏡像加速器,這主要是為了提高拉取docker hub的速度,可以在https://cr.console.aliyun.com/cn-huhehaote/instances/mirrors 中看見,我的內容如下,完事之后就可以享受加速了,

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://baqadmms.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

在.NET Core工程中撰寫Dockerfile檔案,

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
#應用基礎鏡像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
#作業目錄
WORKDIR /app
#將整個publish檔案 放到該檔案下生產
COPY . /app
#指定對外埠
EXPOSE 5003
#啟動命令
ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll"]

因為我的應用程式是單一部署,所以不存在動態埠  所以我這邊直接useUrls了,

public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseUrls("http://*:5003");
                });

現在通過dotnet命令發布專案,一定記得把Dockerfile檔案屬性改為輸出到輸出目錄哦~,隨后你可以現在Windows中進行測驗了,例如dotnet xxx.dll命令,

隨后通過FileZilla上傳到Linux目錄中Publish檔案夾中,當然這也是我自己的愛好,因為它的命名很符合現在的場景,

就這樣我們去構建build,通過linux命令cd到發布檔案夾中,然后通過build命令構建鏡像,我們發現剛剛的DockerFile的命令,一步一步都執行成功了,

[root@iZenarrdqnvpc4Z JwtWeb]# docker build -t jwtdemo .
Sending build context to Docker daemon   22.9MB
Step 1/5 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
3.0-buster-slim: Pulling from dotnet/core/aspnet
8ec398bc0356: Pull complete 
9584d2ef7ebe: Pull complete 
62b61706cd9b: Pull complete 
676f1d13ec65: Pull complete 
35ddfe9ef309: Pull complete 
Digest: sha256:de2b03f916d1f3a72d342825c3ec4414d0190862b20d2af295320334f17a1480
Status: Downloaded newer image for mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim
 ---> c7e868fda63d
Step 2/5 : WORKDIR /app
 ---> Running in 385a30e2b223
Removing intermediate container 385a30e2b223
 ---> b95c2a722df5
Step 3/5 : COPY . /app
 ---> 48edf64106cd
Step 4/5 : EXPOSE 5003
 ---> Running in d4bf7b3b7122
Removing intermediate container d4bf7b3b7122
 ---> 752724a940e8
Step 5/5 : ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll"]
 ---> Running in 9c0c2c190da3
Removing intermediate container 9c0c2c190da3
 ---> 4045861329a7
Successfully built 4045861329a7
Successfully tagged jwtdemo:latest

隨后通過docker images 查看生成鏡像是否成功,ok沒問題,現在就可以run了...

[root@iZenarrdqnvpc4Z JwtWeb]# docker images
REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE
jwtdemo                                latest              4045861329a7        2 minutes ago       230MB
mcr.microsoft.com/dotnet/core/aspnet   3.0-buster-slim     c7e868fda63d        7 days ago          207MB

在docker run 中指定外部和docker內部中的映射規則  --name 是容器的名稱,而最后面的是使用的所使用的鏡像,

[root@iZenarrdqnvpc4Z JwtWeb]# docker run --name jwtweb -d -p 8000:5003 jwtdemo
36c4d4f8218adeeafa737f51f0975dfe8d6aa6d17435cefc355749a59c6298a2
[root@iZenarrdqnvpc4Z JwtWeb]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
36c4d4f8218a        jwtdemo             "dotnet Jwt_Policy_D…"   7 seconds ago       Up 6 seconds        0.0.0.0:8000->5003/tcp   jwtweb

非常簡單,我剛剛發布的網站地址如下:傳送門 ..

超超超超超級簡單的dockerfile github地址在:傳送門 ..

另外

如果不通過UseUrls來進行啟動的話,那么可以該下dockerfile的ENTRYPOINT 如下

ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll","urls=http://*:5003"]

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/75369.html

標籤:.NET Core

上一篇:.NET/C# 萬能 HTTP 模擬請求框架

下一篇:Linux下自動化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • WebAPI簡介

    Web體系結構: 有三個核心:資源(resource),URL(統一資源識別符號)和表示 他們的關系是這樣的:一個資源由一個URL進行標識,HTTP客戶端使用URL定位資源,表示是從資源回傳資料,媒體型別是資源回傳的資料格式。 接下來我們說下HTTP. HTTP協議的系統是一種無狀態的方式,使用請求/ ......

    uj5u.com 2020-09-09 22:07:47 more
  • asp.net core 3.1 入口:Program.cs中的Main函式

    本文分析Program.cs 中Main()函式中代碼的運行順序分析asp.net core程式的啟動,重點不是剖析原始碼,而是理清程式開始時執行的順序。到呼叫了哪些實體,哪些法方。asp.net core 3.1 的程式入口在專案Program.cs檔案里,如下。ususing System; us ......

    uj5u.com 2020-09-09 22:07:49 more
  • asp.net網站作為websocket服務端的應用該如何寫

    最近被websocket的一個問題困擾了很久,有一個需求是在web網站中搭建websocket服務。客戶端通過網頁與服務器建立連接,然后服務器根據ip給客戶端網頁發送資訊。 其實,這個需求并不難,只是剛開始對websocket的內容不太了解。上網搜索了一下,有通過asp.net core 實作的、有 ......

    uj5u.com 2020-09-09 22:08:02 more
  • ASP.NET 開源匯入匯出庫Magicodes.IE Docker中使用

    Magicodes.IE在Docker中使用 更新歷史 2019.02.13 【Nuget】版本更新到2.0.2 【匯入】修復單列匯入的Bug,單元測驗“OneColumnImporter_Test”。問題見(https://github.com/dotnetcore/Magicodes.IE/is ......

    uj5u.com 2020-09-09 22:08:05 more
  • 在webform中使用ajax

    如果你用過Asp.net webform, 說明你也算是.NET 開發的老兵了。WEBform應該是2011 2013左右,當時還用visual studio 2005、 visual studio 2008。后來基本都用的是MVC。 如果是新開發的專案,估計沒人會用webform技術。但是有些舊版 ......

    uj5u.com 2020-09-09 22:08:50 more
  • iis添加asp.net網站,訪問提示:由于擴展配置問題而無法提供您請求的

    今天在iis服務器配置asp.net網站,遇到一個問題,記錄一下: 問題:由于擴展配置問題而無法提供您請求的頁面。如果該頁面是腳本,請添加處理程式。如果應下載檔案,請添加 MIME 映射。 WindowServer2012服務器,添加角色安裝完.netframework和iis之后,運行aspx頁面 ......

    uj5u.com 2020-09-09 22:10:00 more
  • WebAPI-處理架構

    帶著問題去思考,大家好! 問題1:HTTP請求和回傳相應的HTTP回應資訊之間發生了什么? 1:首先是最底層,托管層,位于WebAPI和底層HTTP堆疊之間 2:其次是 訊息處理程式管道層,這里比如日志和快取。OWIN的參考是將訊息處理程式管道的一些功能下移到堆疊下端的OWIN中間件了。 3:控制器處理 ......

    uj5u.com 2020-09-09 22:11:13 more
  • 微信門戶開發框架-使用指導說明書

    微信門戶應用管理系統,采用基于 MVC + Bootstrap + Ajax + Enterprise Library的技術路線,界面層采用Boostrap + Metronic組合的前端框架,資料訪問層支持Oracle、SQLServer、MySQL、PostgreSQL等資料庫。框架以MVC5,... ......

    uj5u.com 2020-09-09 22:15:18 more
  • WebAPI-HTTP編程模型

    帶著問題去思考,大家好!它是什么?它包含什么?它能干什么? 訊息 HTTP編程模型的核心就是訊息抽象,表示為:HttPRequestMessage,HttpResponseMessage.用于客戶端和服務端之間交換請求和回應訊息。 HttpMethod類包含了一組靜態屬性: private stat ......

    uj5u.com 2020-09-09 22:15:23 more
  • 部署WebApi隨筆

    一、跨域 NuGet參考Microsoft.AspNet.WebApi.Cors WebApiConfig.cs中配置: // Web API 配置和服務 config.EnableCors(new EnableCorsAttribute("*", "*", "*")); 二、清除默認回傳XML格式 ......

    uj5u.com 2020-09-09 22:15:48 more
最新发布
  • C#多執行緒學習(二) 如何操縱一個執行緒

    <a href="https://www.cnblogs.com/x-zhi/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2943582/20220801082530.png" alt="" /></...

    uj5u.com 2023-04-19 09:17:20 more
  • C#多執行緒學習(二) 如何操縱一個執行緒

    C#多執行緒學習(二) 如何操縱一個執行緒 執行緒學習第一篇:C#多執行緒學習(一) 多執行緒的相關概念 下面我們就動手來創建一個執行緒,使用Thread類創建執行緒時,只需提供執行緒入口即可。(執行緒入口使程式知道該讓這個執行緒干什么事) 在C#中,執行緒入口是通過ThreadStart代理(delegate)來提供的 ......

    uj5u.com 2023-04-19 09:16:49 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    <a href="https://www.cnblogs.com/huangxincheng/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/214741/20200614104537.png" alt="" /&g...

    uj5u.com 2023-04-18 08:39:04 more
  • 記一次 .NET某醫療器械清洗系統 卡死分析

    一:背景 1. 講故事 前段時間協助訓練營里的一位朋友分析了一個程式卡死的問題,回過頭來看這個案例比較經典,這篇稍微整理一下供后來者少踩坑吧。 二:WinDbg 分析 1. 為什么會卡死 因為是表單程式,理所當然就是看主執行緒此時正在做什么? 可以用 ~0s ; k 看一下便知。 0:000> k # ......

    uj5u.com 2023-04-18 08:33:10 more
  • SignalR, No Connection with that ID,IIS

    <a href="https://www.cnblogs.com/smartstar/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/u36196.jpg" alt="" /></a>...

    uj5u.com 2023-03-30 17:21:52 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:15:33 more
  • 一次對pool的誤用導致的.net頻繁gc的診斷分析

    <a href="https://www.cnblogs.com/dotnet-diagnostic/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/3115652/20230225090434.png" alt=""...

    uj5u.com 2023-03-28 10:13:31 more
  • C#遍歷指定檔案夾中所有檔案的3種方法

    <a href="https://www.cnblogs.com/xbhp/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/957602/20230310105611.png" alt="" /></a&...

    uj5u.com 2023-03-27 14:46:55 more
  • C#/VB.NET:如何將PDF轉為PDF/A

    <a href="https://www.cnblogs.com/Carina-baby/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/2859233/20220427162558.png" alt="" />...

    uj5u.com 2023-03-27 14:46:35 more
  • 武裝你的WEBAPI-OData聚合查詢

    <a href="https://www.cnblogs.com/podolski/" target="_blank"><img width="48" height="48" class="pfs" src="https://pic.cnblogs.com/face/616093/20140323000327.png" alt="" /><...

    uj5u.com 2023-03-27 14:46:16 more