如何將asp.net core3.1項目部署到centos docker


從0開始新建一個 asp.netcore webmvc項目,並將項目發布到centos系統中的docker容器里,實現方法如下:

1.新建一個.netcore web mvc項目

用vs2019新建一個名稱為demo1.MvcOne 的.netcore web mvc項目

 

 點擊 【下一步】 按鈕

 

 點擊 【創建】按鈕

選擇WEB應用程序(模型視圖控制器),點擊【創建】按鈕

 創建后的目錄結構

 

 打開View/Home/Index.cshtml文件,編輯一點自定義內容

先在本地測調試 一下,看能否跑起來,將  demo1.MvcOne設置為啟動項目,按F5啟動。

 

 

 2. 發布demo1.MvcOne項目

將demo1.MvcOne發布到本地的一個文件夾。

點擊【創建配置文件】按鈕

 

 

 點擊【發布】按鈕,發布完成后在本地發布的文件夾中添加一個Dockerfile的文本文件,此文件沒有后綴

 

  

編輯Dockerfile文件的內容,不要用  vs code或vs2019自動生成的Dockerfile,不好用。

編輯Dockerfile文件的內容為:

#添加.nencore3.1基礎鏡像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
#容器工作目錄
WORKDIR /app

#指定項webapi或mvc站點的內部啟動端口,默認是80
ENV ASPNETCORE_URLS http://+:50001

#暴露docker容器端口
EXPOSE 50001
EXPOSE 443


#拷貝發布目錄下的所有文件到容器的工作根目錄
#COPY . . (這樣寫也可以)
COPY ./ ./

# 如果用System.SqlClient.dll訪問數據庫,需要加這一句
RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
#容器入口點 ENTRYPOINT [
"dotnet", "demo1.MvcOne.dll"]

 

3. 將發布好的文件,全部上傳到centos

將發布好的本地文件夾中的所有文件,指 G:\code\publish\demo1\demo1.MvcOne 目錄里的所有文件,全部上傳到centos的某個文件夾里面,可以用gitLab上傳,或者用xftp上傳。

我這里用xftp上傳來演示:

 

 

    4. 在centos里創建docker本地鏡像

 創建docker鏡像的前提條件,先要在centos上安裝docker-ce,安裝docker-ce的步驟請參考 centos7.6安裝docker  , 

(1) 下載.netcore 3.1基礎鏡像

 下載基礎鏡像 mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim ,.netcore3.1需要用到此基礎鏡像。此鏡像比較大,下載需要較長時間。

 docker pull mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim

 

如果用源碼來構建鏡像,還需要下載 mcr.microsoft.com/dotnet/core/sdk:3.1-buster  鏡像,用源碼構建鏡像的Dockerfile需要另外配置,本篇不詳解。

docker pull mcr.microsoft.com/dotnet/core/sdk:3.1-buster

 

(2) 構建本地鏡像

 進入 centos的demo1.MvcOne項目發布文件夾(比如 /projectpublish/demo1.MvcOne),使用docker build命令構建本地鏡像。

docker build -t demo1.mvcone .

demo1.mvcone表示鏡像名,鏡像名必須小寫,注意后面個點號(.),並且點號前面有個空格,表示構建鏡像到當前目錄。

構建鏡像成功出現以下信息:

 用docker images 命令查看鏡像列表

 

  

5.  創建容器

容器是鏡像的實例,創建demo1.mvcone鏡像的容器

docker run -d --name my.demo1.mvcone -p 8001:50001 -v /appdata/mvcone demo1.mvcone

-d 后台運行容器

--name 容器名

-p 8001:50001  冒號前面的8001表示對象訪問的端口,冒號后面的50001表示容器內部端口。

-v 為容器設置卷路徑,可隨意指定卷路徑,這里是在/appdata/mveone 目錄下。

最后面的demo1.mvcone 表示鏡像名

 

查看運行中的容器:

docker ps

 

 

 若容器啟動成功,訪問my.demo1.mvcone站點的效果:

 

6. 如何將本地鏡像上傳到docker hub

通常在生產環境,開發的項目需要集群部署,為了讓其它docker服務能快速的拉取鏡像,需要將本地鏡像上傳到dokcer倉庫,docker倉庫分為官方公有倉庫docker hub及私有倉庫harbar,使用私有倉庫harbor需要搭建harbor環境,本文不講述,本文以上傳到docker hub為例。

(1)  添加鏡像Tag

 使用Tag標記本地像鏡,將本地鏡像 demo1.mvcone 標記為 yyee/demo1.mvcone , yyee是我在dockerhub的帳號名,也是默認的倉庫名。

標記前后對比:

 

 

 

(2) 登錄docker hub

docker login

然后輸入在docker hub注冊的用戶名和密碼,如果還沒有注冊dokcer hub帳號,請先注冊docker hub帳號,注冊URL: https://hub.docker.com/

docker login 命令可以帶用戶名與密碼參數,可以不用單獨輸入用戶名與密碼。

docker login -u xxxuser -p docker12345

 

 

(3) 上傳鏡像

登錄成功后,使用docker push命令上傳本地鏡像到docker hub倉庫

dokcer push yyee/demo1.mvcone

 

上傳前后對比:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM