將.NETCore 6.0應(yīng)用通過(guò)Docker部署到Linux服務(wù)器運(yùn)行

目標(biāo)
創(chuàng)建一個(gè).NetCore Web應(yīng)用并使用Docker容器部署到Linux云服務(wù)器上運(yùn)行。
準(zhǔn)備工具
安裝Docker Desktop(本地測(cè)試用)
VS2022開發(fā)工具(.NET CORE web)
Linux云服務(wù)器(部署用)
Xshell鏈接Linux云服務(wù)器的工具
1.使用VS2022新建一個(gè)ASP.NET Core Web應(yīng)用
? ? ? ?

? ? ? ?
? ? ? ?

? ? ? ?
勾選啟用Docker
Docker OS為L(zhǎng)inux
? ? ? ?

? ? ? ?
? ? ? ?

? ? ? ?
接下來(lái)我們?cè)诒镜厥褂胐ocker測(cè)試一下(需要安裝Docker Desktop),(如果不想本地測(cè)試的也可以跳過(guò)這些直接看第三部的服務(wù)器環(huán)境配置):
使用PowerShell進(jìn)入到解決方案目錄
? ? ? ?

? ? ? ?
然后執(zhí)行打包成鏡像,目錄為項(xiàng)目名:
docker image build -f ./WebCoreCg02/Dockerfile -t aspnetcore:latest .
完成后可以使用docker images命令查看鏡像
? ? ? ?

? ? ? ?
注意這個(gè)是名字,下面構(gòu)建容器要用
? ? ? ?

? ? ? ?
然后構(gòu)建容器
docker run --name=aspnetcore -p 8821:80 -d aspnetcore
--name :指定容器名稱。
--p :指定容器端口。
--d :指定容器后臺(tái)運(yùn)行。
? ? ? ?

? ? ? ?
docker ps命令查看正在運(yùn)行的容器
使用瀏覽器直接訪問(wèn)localhost:8821就能看到web網(wǎng)站了
2.云服務(wù)器環(huán)境配置
在騰訊云找個(gè)linux云服務(wù)器,用xshell鏈接上
然后執(zhí)行下面的命令在服務(wù)器上安裝docker和.NET6環(huán)境
? ? ? ?

? ? ? ?
A:安裝docker
yum -y install docker-ce
如果執(zhí)行后出現(xiàn) No package docker-ce available 錯(cuò)誤,
先執(zhí)行下面
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
然后再執(zhí)行安裝yum -y install docker-ce
安裝成功后啟動(dòng)
sudo systemctl start docker
設(shè)置開機(jī)啟動(dòng)
sudo systemctl enable docker
查看是否運(yùn)行
systemctl status docker
? ? ? ?

? ? ? ?
B:安裝.NetCoreSDK6.0
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
sudo yum install dotnet-sdk-6.0
? ? ? ?

? ? ? ?
檢查環(huán)境:
dotnet --info
? ? ? ?

? ? ? ?
------------------------以上云服務(wù)器的環(huán)境準(zhǔn)備好了后,接下來(lái)上傳項(xiàng)目----
3.打包上傳項(xiàng)目到服務(wù)器
然后回到VS2022項(xiàng)目里,(這里我又新建了一個(gè).NET6 web項(xiàng)目 項(xiàng)目名為WebCoreWebCg03)
吧dockerfile文件屬性改下,然后發(fā)布文件夾publish。
? ? ? ?

? ? ? ?
然后把項(xiàng)目打壓縮包(注意要打zip格式的)。
然后回到Xshell里打命令rz會(huì)彈出選擇上傳文件
選擇壓縮包上傳上去,然后ls看一下壓縮包名字
后unzip -d WebCoreWebCg03 WebCoreWebCg03.zip進(jìn)行解壓,解壓后看好自己解壓的文件夾
? ? ? ?

? ? ? ?
解壓后它又多套了一層文件夾,所以我們cd進(jìn)去
進(jìn)到dockerfule文件的上一層目錄后,然后開始編譯成鏡像(就像上面在pc端測(cè)試的那樣)
docker image build -f ./WebCoreWebCg03/Dockerfile -t aspnetcore:latest .
? ? ? ?

? ? ? ?
編譯完成后,查看鏡像
docker images
第一個(gè)就是我們剛才編譯的鏡像
? ? ? ?

? ? ? ?
將鏡像運(yùn)行起來(lái)生成容器
docker run --name=aspnetcore -p 8808:80 -d aspnetcore
這時(shí)候在瀏覽器輸入地址和端口就能訪問(wèn)了
? ? ? ?

? ? ? ?
其他問(wèn)題:
如果shell執(zhí)行報(bào)錯(cuò):
run database recovery error: cannot open Packages database in /var/lib/rpm…
解決辦法:
[root@www rpm]# rm -f __db.* ? ? # 清除原rpmdb文件
[root@www rpm]# rpm --rebuilddb ? ? # 重建rpm數(shù)據(jù)庫(kù)
[root@www rpm]# yum clean all ? ? # 清除所有yum的緩存