從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
上傳前后對比: