AspNetCoreapi 使用 Docker + Centos 7部署

来源:https://www.cnblogs.com/szlblog/archive/2018/10/29/9871400.html
-Advertisement-
Play Games

好久沒有更新文章了,前段時間寫了一系列的文章放到桌面了,想著修修改改,後來系統中勒索病毒了還被公司網路安全的抓到是我電腦,後來裝系統文章給裝丟了。然後好長一段時間沒有寫了。 今天記錄一下AspNetCore 部署Docker+Centos 7 這裡說明一下:Docker 需要用Centos7版本的操 ...


 

好久沒有更新文章了,前段時間寫了一系列的文章放到桌面了,想著修修改改,後來系統中勒索病毒了還被公司網路安全的抓到是我電腦,後來裝系統文章給裝丟了。然後好長一段時間沒有寫了。

今天記錄一下AspNetCore 部署Docker+Centos 7 這裡說明一下:Docker 需要用Centos7版本的操作系統

這裡模擬演示的是實戰環境的部署,項目就是使用的實戰中的項目

1:安裝前準備

  首先確保我們有一臺Linux 伺服器或者系統或者虛擬機,我使用的是虛擬機系統做的Centos 7的版本。然後確保網路是通的,最好能聯通外網,因為我們在部署的過程須有很多的東西需要下載:

部署中使用的工具:secureCRT:鏈接Linux終端的伺服器,

                            :XFTP5    :上傳發佈的文件

2:安裝Docker 步驟如下:

  使用:secureCRT鏈接上Linux 如下:

  

  Docker的官方文檔:https://docs.docker.com/

  Docker 分為社區版CE和企業版EE,CE是免費提供給開發者和小團體使用,企業版的是收費的,我這裡選擇使用的是社區版的。

  步驟:如下

  1.開始安裝:首先執行命令安裝所需的包:sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2

  2.設置穩定的存儲庫:sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo

  3.安裝:sudo yum install docker-ce

  4.啟動:sudo systemctl start docker

  5.驗證是否成功: sudo docker version

  6.安裝結果:

  

  這裡是官方安裝過程:https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1

  

3:AspNetCore 鏡像的選擇與拉取

  選擇下載鏡像前我們首先需要確定的是我們項目將要或者已經使用的是什麼版本的項目框架,我們項目使用的是2.1;

  

  

  在下載鏡像的時候我們可以事先給下載好鏡像,也可以使用 Dockerfile 文件進行下載:

  如果我們需要在Docker 容器中進行編譯打包運行等操作的時候我們就需要安裝完整的SDK了, 如果我們只是單純的運行的話只需要安裝運行時 aspnetcore-runtime就行:官方文檔中也有明確的說明:

  

  拉取鏡像有兩種方式如下:

  1.使用命令拉取鏡像: docker pull microsoft/dotnet:2.1-sdk

  

  查看結果:docker images

   

  2.使用Dockerfile 文件拉取

  新建新建文件去掉尾碼名命名為:Dockerfile  編輯文件內容如下:請註意FROM 節點上也是咱們將要使用的鏡像:下圖箭頭指向部分

  

  切換到Dockerfile 文件所在的目錄下 執行命令 創建一個鏡像

  

  查看結果:

  

  這裡有兩個鏡像 名為ESD鏡像就是咱們的項目運行鏡像了,但是我們沒有準備任何將要運行的項目,所以此鏡像是失敗的,我們執行這一步證明瞭Docker 可以直接拉取項目運行的鏡像。

  執行命令對它進行刪除:docker rmi  esd(可以使用鏡像的名稱或者鏡像的 ID進行刪除)

  

4:項目的部署:

  首先在進行部署前我建議大家先看認真看一邊官方有關Docker的網路配置

  https://docs.docker.com/network/

  一個新的項目如果不對項目的IP或埠進行任何改變的話 部署成功後預設監聽的是80 埠,如下圖所示:

  

  如果你不進行改變的話也就是說這個項目部署是就使用80埠了,在創建容器的時候重新指定的埠就訪問不通了。

  所以我首先改動了項目中的項目運行時監聽的埠在項目文件Program添加代碼如下:

  .UseKestrel().UseUrls("http://*:8091") // 在所有網路介面上監聽埠 8091

  

  改好後進行發佈:發佈完成後上傳到伺服器Dockerfire 文件所在的目錄中

  對Dockerfire 進行修改

  

   # 表示當前創建的鏡像所依賴的基礎鏡像

  FROM microsoft/dotnet:2.1-sdk

  # 表示當前容器的工作目錄 將要運行的web程式放在容器中的那個目錄下,沒有會自動創建

  WORKDIR /app

  # 設置對外暴露的埠,不設置預設為 80

  EXPOSE  8091

  # 表示會把當前目錄下的Web程式文件 拷貝到 容器的 /app 文件下,

  COPY  . .

  # 將要執行的命令

  CMD ["dotnet", "lenovo.core.ESDDB.WebApi.dll"]

  使用命令運行該Dockerfire 文件創建容器

  命令: docker build -t  esdapi .  

  這個命令需要註意的是 鏡像名稱 不要使用大寫 鏡像名稱後的 “點”不要忽略了

  

  創建容器:

  命令:docker run --name esdapi -d -p 8091:8091 esdapi

  結果如圖所示:

  

  查看結果:docker ps

  

  這裡註意的是在查看結果的時候如果沒有容器在運行則使用 docker ps -a 命令查看容器找到容器的ID 使用 docker logs +容器ID 查看容器日誌信息找原因。

  外部訪問部署結果:

  

  大家對直接 考軟考高級,以及PMP 證書感興趣的話 可以加群 815186020 目前機構正在搞活動優惠很多,說 “樂途” 介紹的應該會有優惠

有不足之處 希望大家指出相互學習,

            本文原創:轉載請註明出處 謝謝!

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • maven pom屬性 內置屬性(預定義,可直接使用) ${basedir} 表示項目根目錄,即包含pom.xml文件的目錄; ${version} 表示項目版本; ${project.basedir}同${basedir}; ${maven.build.timestamp} 表示項目構件開始時間; ...
  • 本博客主要介紹通過 Javassist、ASM 操作 Java 位元組碼。 Class 文件是什麼 通常對於用 idea 的同學來說,class 文件是直接可以查看的,可以看到像 java 那樣的代碼。其實 class 文件是一種位元組碼文件,我們平時在 idea 所看到的,是 idea 自動反編譯後的 ...
  • 引用鏈接:https://www.cnblogs.com/duwenxing/p/7421100.html 目的 用途 1.在引用的使用中,單純給某個變數去別名是毫無意義的,引用的目的主要用於在函數參數的傳遞中,解決大塊數據或對象的傳遞效率和空間不如意的問題 2.用引用傳遞函數的參數,能保證參數在傳 ...
  • 聲明:本文為www.cnc6.cn原創,轉載時請註明出處,謝謝! 一、編寫Person與City類,如下: 二、為以上兩個類建立一些數據,存儲於persons與cities中,如下: 三、Join第一種用法: 官方釋義:基於匹配鍵對兩個序列的元素進行關聯。使用預設的相等比較器對鍵進行比較。 這個與數 ...
  • 幫助類 using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Web; namespace WebApplication5{ public cl ...
  • <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> ...
  • 在創建多個控制項後,有些控制項會發生重疊,那麼就需要在滑鼠按下它時能顯示在最上層,下麵通過先將按下操作的控制項刪除然後再重建,就達到讓它顯示在最上層了 ...
  • 1)避免使用ArrayList。 因為任何對象添加到ArrayList都要封箱為System.Object類型,從ArrayList取出數據時,要拆箱回實際的類型。建議使用自定義的集合類型代替ArrayList。.net 2.0提供了一個新的類型,叫泛型,這是一個強類型,使用泛型集合就可以避免了封箱 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...