日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

.NET与鲲鹏共展翅,昇腾九万里(二)

發(fā)布時(shí)間:2023/12/4 asp.net 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET与鲲鹏共展翅,昇腾九万里(二) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在上一篇文章?.NET與鯤鵬共展翅,昇騰九萬(wàn)里(一)中,我們通過(guò)在鯤鵬架構(gòu)的Euler系統(tǒng)上跑Docker的方式把dotnet core 跑起來(lái)了,有讀者反饋說(shuō)“還是走docker嘍,你這個(gè)標(biāo)題應(yīng)該改成鯤鵬和docker兩條鯨魚(yú)的故事”。這里要說(shuō)明一下,dotnet core 在鯤鵬上的Euler系統(tǒng)里原生就能跑起來(lái),使用docker只是為了簡(jiǎn)化應(yīng)用環(huán)境配置以及隔離各種應(yīng)用對(duì)操作系統(tǒng)的配置污染(比如修改環(huán)境變量,設(shè)定執(zhí)行路徑,變更各種配置)從而導(dǎo)致新的應(yīng)用配置好后,原有應(yīng)用可能掛掉的問(wèn)題。

在這里,我也簡(jiǎn)單的介紹一下在Euler系統(tǒng)下直接安裝dotnet core SDK的方法。

1. 安裝幾個(gè)必備庫(kù)

yum install zlib -y yum install libcurl -y

2. 下載 dotnet core sdk arm64 的包,這里以 3.1.201版本為例,其他版本地址可以去?dotnet core 官網(wǎng)獲取

wget https://download.visualstudio.microsoft.com/download/pr/98a2e556-bedd-46c8-b3fa-96a9f1eb9556/09f60d50e3cbba0aa16d48ceec9dcb0b/dotnet-sdk-3.1.201-linux-arm64.tar.gz

3. 解壓并安裝 dotnet-sdk-3.1.201-linux-arm64.tar.gz,這里假定將sdk安裝到 /usr/share/dotnet/

mkdir -p /usr/share/dotnet/ tar zxf dotnet-sdk-3.1.201-linux-arm64.tar.gz -C /usr/share/dotnet/ export DOTNET_ROOT=/usr/share/dotnet/ export PATH=$PATH:/usr/share/dotnet/

好了,到這里dotnet core sdk就安裝完成了,你可以輸入dotnet –info驗(yàn)證一下。

另外可以將最后兩個(gè)2個(gè)export添加到 /etc/profile,這樣每次登錄都可以直接使用 dotnet 命令了。


現(xiàn)在接著上一篇文章的內(nèi)容,我們看看如何使用.NET SDK 的 Docker鏡像編譯 .NET Core程序,并使用Docker將它跑起來(lái)。

一、使用Docker 鏡像創(chuàng)建dotnet core 項(xiàng)目

1. 拉取dotnet core sdk 3.1的鏡像

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

2. 新建一個(gè)dotnet core 項(xiàng)目

先在本地建一個(gè)目錄

mkdir -p ~/dotnet/mvctest

現(xiàn)在執(zhí)行如下命令,新建一個(gè)sdk鏡像的容器,并進(jìn)入交互界面,這里使用了 -v ~/dotnet/mvctest:/root/dotnet/mvctest 參數(shù)將外部的文件夾映射到容器內(nèi)

docker run --rm -it \ -v ~/dotnet/mvctest:/root/dotnet/mvctest \ mcr.microsoft.com/dotnet/core/sdk:3.1 \ bash

進(jìn)入容器后執(zhí)行

dotnet new mvc -n mvctest -o ~/dotnet/mvctest

這一步跟平時(shí)我們使用dotnet命令行沒(méi)什么區(qū)別,這里就是利用 sdk鏡像創(chuàng)建一個(gè)dotnet core 項(xiàng)目

輸入exit退出容器,由于剛才使用 --rm 參數(shù)運(yùn)行sdk鏡像,退出后容器自動(dòng)銷(xiāo)毀。

看一下本機(jī)的~/dotnet/mvctest是否已經(jīng)有內(nèi)容了

二、使用sdk鏡像來(lái)編譯這個(gè)新建的項(xiàng)目,并生成鏡像

1. 在mvctest目錄下新建一個(gè)Dockerfile,內(nèi)容如下

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build WORKDIR /source# copy proj and restore as distinct layers COPY . . RUN dotnet restore RUN dotnet publish -c release -o /app --no-restore# create app image FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 WORKDIR /app COPY --from=build /app . ENTRYPOINT ["dotnet", "mvctest.dll"]

里面引用了2個(gè)鏡像:

mcr.microsoft.com/dotnet/core/sdk:3.1?用于編譯

mcr.microsoft.com/dotnet/core/aspnet:3.1 用于mvctest的基礎(chǔ)鏡像

2. 編譯dotnet項(xiàng)目并生成mvctest鏡像,如果本地已有最新的sdk及aspnet鏡像,以下參數(shù)中的 --pull 可以省略加快編譯速度

docker build --pull -t mvctest . -f Dockerfile

3. 看下生成的鏡像

docker images

4. 運(yùn)行這個(gè)鏡像

docker run --rm -it -p 80:80 mvctest

程序成功運(yùn)行,輸出如下

瀏覽器打開(kāi)地址展示如下

正式使用可以去掉--rm -it兩個(gè)參數(shù),改成-d --restart=unless-stopped,這樣程序?qū)⒃诤笈_(tái)運(yùn)行,不會(huì)出現(xiàn)交互界面,當(dāng)異常退出后,docker也能自動(dòng)將其重新運(yùn)行起來(lái)

docker run -d --restart=unless-stopped -p 80:80 mvctest

至此,dotnet core與鯤鵬架構(gòu)及Euler系統(tǒng)相關(guān)的部分內(nèi)容已經(jīng)結(jié)束,所有在其他平臺(tái)上正常運(yùn)行的程序,基本上不需要修改即可在鯤鵬架構(gòu)下的Euler系統(tǒng)上運(yùn)行。這里提一點(diǎn),由于鯤鵬是arm64架構(gòu)的,有些dotnet包底層引用了c++編寫(xiě)的dll,比如System.Data.SQLite, 并且該nuget包里沒(méi)有包含arm64的dll,如果你的使用了這樣的包,在鯤鵬架構(gòu)下將會(huì)報(bào)告找不到dll的錯(cuò)誤,解決方法有2種,一種是自己去找到arm64使用的dll, 拷貝到項(xiàng)目中,另外一種就是換成其他支持arm64的包,比如System.Data.SQLite有個(gè)替代的由微軟出品的 Microsoft.Data.Sqlite。當(dāng)然了這種情況比較少,目前我所涉及的項(xiàng)目只有Sqlite掉坑里了。

總結(jié)

以上是生活随笔為你收集整理的.NET与鲲鹏共展翅,昇腾九万里(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。