1. 程式人生 > >.NET Core Web 應用部署到 Docker 中執行

.NET Core Web 應用部署到 Docker 中執行

環境介紹 :

  虛擬機器:VirtualBox 5.1.6

  系 統:Ubuntu 16.04.1 LTS

  系統準備完成後可以使用 sudo apt-get udpatesudo apt-get upgrade 對系統進行更新,然後開啟 https://www.microsoft.com/net/core#ubuntu 這個網址,在ubuntu系統中安裝 .net core 執行環境。直接複製/貼上給出的命令就可以了。

安裝 Docker:

  Docker 的安裝其實也是使用官方提供的 step by step 安裝步驟。如果不想看介紹可以直接使用下面我整理的命令:

//順序執行這些命令:
sudo apt-get install apt-transport-https ca-certificates sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D //開啟 /etc/apt/sources.list.d/docker.list 這個檔案,如果不存在就建立一個(sudo touch docker.list) //在 docker.list 中輸入下面這一行內容 deb https://apt.dockerproject.org/repo ubuntu-xenial main
//接著執行命令 sudo apt-get update sudo apt-get purge lxc-docker apt-cache policy docker-engine sudo apt-get update sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual sudo reboot //重啟系統 sudo apt-get update sudo apt-get install docker-engine sudo service docker start

上面的命令執行後,一定要看一下響應的結果,有些會提示是不用更新的,忽略即可。接下來我們執行一下經典的 hello-world.命令如下:  

sudo docker run hello-world

  執行這個命令,首先會從 docker 的映象倉庫()中拉取名為 hello-world 的映象,然後在本地執行。執行成功之後,我們會看到 hello world 輸出。

  這裡說一下,docker 提供了一個集中管理映象的地方,即 ,在這裡我們可以找到自己想要的基礎映象,當然我們也可以把自己製作的映象推送到 docker 的映象倉庫中,前提是註冊一個自己的 docker hub 賬號。

Pull .NET Core image:

docker 安裝成功後,我們就去 docker hub 中找由 Microsoft 維護的 dotnet core 基礎映象(),執行下面的命令將映象拉取到本地:

docker pull microsoft/dotnet

等待映象拉取到本地之後,我們執行下面的命令並檢視 dotnet core 環境是否正常(這裡其實是多餘的,MS 怎麼可能給一個不能用的映象呢?):

docker run -it microsoft/dotnet /bin/bash

  這是進入到容器中的命令列。然後我們輸入 dotnet --version 檢視到當前映象內的 dotnet CLI 版本號為:1.0.0-preview2-003131。輸入 exit 回車 退出容器。

  好吧,現在 dotnet core 的 docker 映象也有了。

建立 ASP.NET Core Web 應用:

  文章開頭說了我已經在 Ubuntu 虛擬機器中也安裝了 dotnet core 環境。使用下面的 dotnet CLI 命令建立一個 ASP.NET Core Web 應用並嘗試執行:

mkdir web_2
cd web_2/
dotnet new -t web
dotnet restore
dotnet run

  我們嘗試執行,並看到執行成功。接下來使用 dotnet publish 將應用釋出,預設釋出到了 bin/Debug/netcoreapp1.0/publish/ 這個目錄。

  注:這裡釋出的時候,如果不修改 project.json 裡面的 scripts 節點,將會用到 node.js ,可以將 prepublish 暫時註釋掉,或者安裝一下 node.js 並用 npm(安裝完 node.js 自帶的) 安裝 gulp bower 這些包。

    命令:npm install -g gulp bower

編寫 Dockerfile:

  在應用根目錄建立一個名為 Dockerfile 的檔案(命令:touch Dockerfile)接下編輯 Dockerfile(命令:vi Dockerfile),輸入下面的內容:

# 宣告使用的基礎映象
FROM microsoft/dotnet:latest
# 將本地dotnet core 應用拷貝到 容器 /app/ 目錄下
COPY bin/Debug/netcoreapp1.0/publish/ /app/
# 設定工作目錄
WORKDIR /app
# 設定匯出埠
EXPOSE 5000/tcp
# 指定應用入口點
ENTRYPOINT ["dotnet", "/app/web_2.dll"]

  完成 Dockerfile 的編寫,接下來構建一個映象。

  命令:docker build -t web_2 .

  不要忘記 web_2 後面的那個點。映象構建完成之後,我們就來執行試試吧。

  命令:docker run -it -p 5000:5000 web_2

  這裡說一下 -it 是指:進入臨時互動模式

  -p 5000:5000 是指將容器的 5000 埠對映到 Docker 宿主機的 5000 埠

  web_2 是指剛才我們構建的映象。

  看到臨時互動命令列,顯示執行成功。我的 Ubuntu 的 IP 是 192.168.10.107。我們用瀏覽器訪問一下 http://192.168.10.107:5000 。壞了,什麼也沒有顯示,檢視 http 狀態碼為 500 ,這說明是應用報錯了。經過排查發現是 dotnet core web 應用引用類庫的版本問題。大家知道前兩天釋出了 dotnet core 1.0.1,我就在 project.json 裡面發現我通過 dotnet CLI 建立的應用已經在使用 1.0.1 版本的類庫了。但是基礎映象 microsoft/dotnet 中還是 dotnet 1.0.0 的類庫。好吧,知道了問題了,就來修改 project.json 中引用的版本吧。將 1.0.1 改為 1.0.0。再次執行 dotnet restoredotnet publish。然後後重新構建 docker 映象並執行。哇,成功了!

總結:

  通過上面的介紹,我們體驗了在 docker 中執行 .net core web 應用。一步一步執行下來發現都是通過命令列安裝各種執行環境,有 dotnet core 執行環境,有 docker 執行環境,有 node.js 執行環境。與編碼人員的關係並不是太大。有時候按著 step by step 走,結果發現走不通,這個時候我們就要仔細分析給出的錯誤描述是什麼,一步一步的找到問題所在,並解決掉。

  不過我們想想上面的這些步驟自動化之後,將是一種怎麼樣的體驗?我們來暢想一下。每次開發人員編寫完程式碼提交後,通過 CI 工具,自動構建應用並自動釋出,完了再自動構建 docker 映象並執行。測試通過後,直接將映象用於生產環境。再進行迴歸測試。

相關推薦

.NET Core Web 應用部署Docker 執行

環境介紹 :   虛擬機器:VirtualBox 5.1.6   系 統:Ubuntu 16.04.1 LTS   系統準備完成後可以使用 sudo apt-get udpate 和 sudo apt-get upgrade 對系統進行更新,然後開啟 https://www.microsoft.com/

Gitlab CI 自動部署 asp.net core web api 到Docker容器

然後可以到官網下載net core 1.1 on MacOS,完成之後可以在命令列輸入 dotnet --version 來檢測當前的版本。 初始化專案並執行 通過3個命領我們可以完成初始化專案並執行的全過程: dotnet new|restore|run。 dotnet 框架預設提供一些初始化的專案模板,

CentOS 7 Nginx部署.NET Core Web應用

部署.NET Core執行時 必要前提 在安裝.NET Core前,需要註冊Microsoft簽名祕鑰並新增Microsoft產品提要,每臺機器只需要註冊一次,執行如下命令: sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages

Azure Terraform(八)利用Azure DevOps 實現Infra資源和.NET CORE Web 應用程式的持續整合、持續部署

一,引言   上一篇講解到利用 Azure DevOps 將整個 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azure Key Vault 部署到 Azure 上,我們也知道整個 Infra 架構已經實現了自動化部署,而

asp.net core web 應用程式的佈局

環境:asp.net core 2.1 在web應用程式中,許多頁面都有相同的一部分,如頁面的頭部,標題或者底部版權資訊等在大部分頁面都是通用的,為了避免重複程式碼,我們可以使用“佈局(layout)”。 在asp.net core web應用程式中,使用佈局的方式:

.net core Web應用啟動類

在ASP.NET Core中,Startup類為Web應用的入口類,用於配置Web服務的管道/過濾器以及Web應用所能用到的服務。在啟動Web應用後,ASP.NET將在主庫中查詢名為Startup的類,無論查詢到的Startup類的訪問限制是什麼,ASP.NET

ASP.NET Core Web API 整合測試使用 Bearer Token

在 ASP.NET Core Web API 整合測試一文中, 我介紹了ASP.NET Core Web API的整合測試.  在那裡我使用了測試專用的Startup類, 裡面的配置和開發時有一些區別, 例如裡面去掉了使用者身份驗證相關的中介軟體. 但是有些被測試的行為裡面需要用到身份/授權資訊. 所以

Asp.Net Core Web應用程序—探索

沒有 sem 依然 host 福音 頁面 gin 圖片地址 網絡 前言 作為一個Windows系統下的開發者,我對於Core的使用機會幾乎為0,但是考慮到微軟的戰略規劃,我覺得,Core還是有先了解起來的必要。 因為,目前微軟已經搞出了兩個框架了,一個是Net標準(.N

ASP.NET Core Web應用在發布時選擇是否對視圖進行編譯

span shee core 將在 lin eas 行修改 mpi property 原文:ASP.NET Core Web應用在發布時選擇是否對視圖進行編譯

Azure Service Bus(三)在 .NET Core Web 應用程式傳送ServiceBus Queue

一,引言   在之前上一篇講解到 Azure ServiceBus Queue 中,我們實地的演示了在控制檯中如何操作ServiceBus Queue ,使用 Azure.Messgae.Service 的依賴包完成 Message 的接收/傳送,今天我們繼續探究 ServiceBus Queue,

Docker容器運行.Net Core web Api項目

c99 images sof 以及 store .com 查看 .html microsoft 安裝Docker環境 參考本人這篇《CentOS 7 下Docker的安裝》文章進行安裝以及環境配置,這裏不做贅述。 通過.NetCore開發WebApi項目 1. 創建.Net

品嘗阿裏雲容器服務:初步嘗試ASP.NET Core Web API站點的Docker自動化部署

asp.net title build 阿裏雲服務器 arm web 容器服務 倉庫 acs 部署場景是這樣的,我們基於 ASP.NET Core 2.0 Preview 1 開發了一個用於管理緩存的 Web API ,想通過阿裏雲容器服務基於 Docker 部署為內網服務

如何把 Java Web 應用放在 docker 容器執行

本文適合 docker 零基礎,且希望使用 docker 執行 Java Web 應用的人士。因為是傻瓜教程,這裡沒有使用 docker 的高階功能,本教程旨在用最簡單方法實現目標。 安裝 docker Docker 的安裝資原始檔存放在Amazon,由於國內特殊的網路環境,安裝時,會間歇

.NET Core容器化之多容器應用部署@Docker-Compose

1.引言緊接上篇.NET Core容器化@Docker,這一節我們先來介紹如何使用Nginx來完

Asp.Net Core WebAPI+PostgreSQL部署Docker

   PostgreSQL是一個功能強大的開源資料庫系統。它支援了大多數的SQL:2008標準的資料型別,包括整型、數值值、布林型、位元組型、字元型、日期型、時間間隔型和時間型,它也支援儲存二進位制的大對像,包括圖片、聲音和視訊。PostgreSQL對很多高階開發語言有原生的程式設計介面,如C/C+

.NET Core 3.0 部署docker執行

自從.NET Core3.0釋出之後,寫了幾篇關於.NET Core 3.0的文章,有助於你快速入門.NET Core3.0。 本篇文章主要講解如何一步步建立一個mvc專案,然後釋出並部署在Docker上執行。需要你本地有docker環境 .Net Core3.0 配

Linux下基於Docker部署.Net Core web api專案

Docker的好處我就不說啦,問問度娘就知道了

.Net Core ABP應用如何在阿里雲Linux Docker開啟Https

.Net Core應用開啟Https本身就有很多種方式:1.程式碼配置2.環境變數3.反向代理 這裡主要記錄下阿里雲的ECS,加阿里雲免費的SSL證書,通過程式程式碼,如何進行配置。 首先從阿里雲下載證書     選擇IIS下載,得到一個zip檔案,裡面是證書以及密碼  

如何在ASP.NET Core Web API測試使用Postman

e30 googl 選項卡 for 並運行 讓我 結合 pos lis 使用Postman進行手動測試 如果您是開發人員,測試人員或管理人員,則在構建和使用應用程序時,有時了解各種API方法可能是一個挑戰。 使用帶有.NET Core的Postman為您的Web API生

發布 .Net Core WebAPI 應用程序到 Docker

ast esc 現在 netcore tree tps 冒號 copy host 目錄 1. 創建 .net core webapi 項目 2. 編譯應用 3. 創建 Dockerfile 文件 4. 上傳文件到服務器 5. 生成Docker Image 6. 在Dock