日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Flexus X 實(shí)例 C#/.Net Core 結(jié)合(git 代碼管理、docker 自定義鏡像)快速發(fā)布部署 - 讓你的項(xiàng)目飛起來(lái)~

jf_21561199 ? 來(lái)源:jf_21561199 ? 作者:jf_21561199 ? 2024-12-25 21:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

???云端部署新體驗(yàn),C# Web API 遇上 Git Docker,828 B2B 企業(yè)節(jié)特惠來(lái)襲!Flexus X 實(shí)例,為您的 C#應(yīng)用提供強(qiáng)大支撐,結(jié)合 Git 版本控制與 Docker 容器化部署,實(shí)現(xiàn)代碼高效管理與無(wú)縫遷移。即刻行動(dòng),讓您的 Web 服務(wù)更加穩(wěn)定、高效,領(lǐng)跑數(shù)字化轉(zhuǎn)型之路!

???本實(shí)驗(yàn)深入演示了如何在 Ubuntu 環(huán)境中,利用 Git 進(jìn)行版本控制管理代碼,并通過(guò) Docker 技術(shù)自定義構(gòu)建鏡像,從而實(shí)現(xiàn)項(xiàng)目從代碼到應(yīng)用的快速構(gòu)建、打包與部署流程。這一流程不僅提升了開(kāi)發(fā)效率,還確保了環(huán)境的一致性與可重復(fù)性。

環(huán)境準(zhǔn)備

購(gòu)買(mǎi)服務(wù)器配置

本次實(shí)驗(yàn)使用的是 Flexus 云服務(wù)器 X 實(shí)例 服務(wù)器。

wKgZPGdsBXmALG2KAACgmvlB9Hk561.png

在性能設(shè)置中我選擇了自定義模式,使用了 4vCPUs | 12GiB,鏡像我選用的是最高版本的 ubuntu

wKgZO2dsBXqAV5RzAAECo10_NbQ658.png

打開(kāi) xshell,使用購(gòu)買(mǎi)的服務(wù)器的公網(wǎng) IP 地址,和設(shè)置的密碼,連接上我們的服務(wù)器。

wKgZPGdsBXqAS1FJAAM3QAKAdTA860.png

項(xiàng)目部署

項(xiàng)目準(zhǔn)備(Dockerfile 文件)

我這里以 c#為例,新建一個(gè) .net8.0 的 Web API 項(xiàng)目

wKgZO2dsBXqADCYuAAIcuQ2rRRQ461.png

這個(gè)新建的官網(wǎng)的 webApi 項(xiàng)目自帶一個(gè)接口 weatherforecast 接口,可以獲取到最近的天氣,因?yàn)楸酒饕康氖侨绾问褂?git+docker 在服務(wù)器上發(fā)布,因此不做太多改動(dòng)。本地啟動(dòng)一下,成功訪問(wèn)到,我們稍后將這個(gè)程序部署到服務(wù)器上。

wKgZPGdsBXuAIdYJAAFR6UZiexs157.png

因?yàn)槲覀兒竺娌捎?Git 方式來(lái)發(fā)布應(yīng)用,因此在 gitee 上新建倉(cāng)庫(kù),將代碼上傳上去。

在項(xiàng)目路徑下新建一個(gè) Dockerfile 文件,內(nèi)容如下(根據(jù)自己的解決方案名稱(chēng)、構(gòu)建環(huán)境,如.net 6.0、7.0 等版本,亦或是其他語(yǔ)言,對(duì)以下代碼就行調(diào)整,本部署方式適用于其他編程語(yǔ)言或其他版本的.net)

wKgZO2dsBXuAEWlDAAJsuq55yWA280.png

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS baseUSER $APP_UIDWORKDIR /appEXPOSE 8080FROM mcr.microsoft.com/dotnet/sdk:8.0 AS buildARG BUILD_CONFIGURATION=ReleaseWORKDIR /srcCOPY ["WebApplication1/WebApplication1.csproj", "WebApplication1/"]RUN dotnet restore "WebApplication1/WebApplication1.csproj"COPY . .WORKDIR "/src/WebApplication1"RUN dotnet build "WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/buildFROM build AS publishARG BUILD_CONFIGURATION=ReleaseRUN dotnet publish "WebApplication1.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=falseFROM base AS finalWORKDIR /appCOPY --from=publish /app/publish .ENTRYPOINT ["dotnet", "WebApplication1.dll"]

這段 Dockerfile 用于構(gòu)建一個(gè) ASP.NET Core 應(yīng)用程序的 Docker 鏡像

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base:從 Microsoft Container Registry (MCR) 拉取 ASP.NET Core 8.0 的官方運(yùn)行時(shí)鏡像作為基礎(chǔ)鏡像,并將其標(biāo)記為 base。這個(gè)鏡像包含了運(yùn)行 ASP.NET Core 應(yīng)用程序所需的一切,但不包含構(gòu)建工具。

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build:從 Microsoft Container Registry 拉取 ASP.NET Core 8.0 的官方 SDK 鏡像,用于構(gòu)建應(yīng)用程序。這個(gè)鏡像包含了構(gòu)建.NET 應(yīng)用程序所需的一切工具。

通過(guò)這種方式,Dockerfile 利用了 Docker 的多階段構(gòu)建特性,確保了構(gòu)建過(guò)程中只包含必要的工具(在構(gòu)建階段使用 SDK,在最終鏡像中僅包含運(yùn)行時(shí)),從而減小了最終鏡像的大小。

Git 部署并拉取代碼

安裝 Git

打開(kāi)終端,然后輸入以下命令來(lái)安裝 Git

sudo apt update sudo apt install git

配置 Git 用戶(hù)信息

在安裝 Git 后,建議配置你的用戶(hù)名和電子郵件地址。這些信息將用于你的 Git 提交,并幫助你識(shí)別代碼更改的源頭。

git config --global user.name "你的名字" git config --global user.email "你的郵箱地址"

SSH 密鑰

雖然你可以通過(guò) HTTPS URL 克隆倉(cāng)庫(kù),但使用 SSH 密鑰可以更安全地訪問(wèn)你的倉(cāng)庫(kù)。

檢查是否已存在 SSH 密鑰:

ls -al ~/.ssh

如果控制臺(tái)輸入結(jié)果像我一樣

wKgZPGdsBXyAPn0xAAANOB5hzzY027.png

.ssh文件夾是存在的,沒(méi)有看到 id_rsa和 id_rsa.pub文件,說(shuō)明沒(méi)有包含任何 SSH 密鑰。那么你需要生成一個(gè)新的 SSH 密鑰對(duì)。

chmod 700 /root/.ssh//更改 /root/.ssh 目錄的權(quán)限,700 意味著只有目錄的所有者 ssh-keygen -t rsa -b 4096 -C "你的郵箱地址"

命令執(zhí)行后,它會(huì)詢(xún)問(wèn)你“Enter file in which to save the key (/root/.ssh/id_rsa):”,這是在詢(xún)問(wèn)你希望將生成的私鑰保存在哪個(gè)文件中。默認(rèn)情況下,它會(huì)建議你保存在/root/.ssh/id_rsa

直接按回車(chē)鍵,它會(huì)接受默認(rèn)的文件名/root/.ssh/id_rsa來(lái)保存私鑰

接下來(lái),會(huì)要求你輸入一個(gè)密碼(passphrase)來(lái)保護(hù)私鑰。這是一個(gè)可選步驟,如果你不想設(shè)置密碼,只需再次按回車(chē)鍵即可跳過(guò)此步驟

wKgZO2dsBXyAN6DeAAAsoINA_RU996.png

再次輸入 ls -al ~/.ssh,可以看到.ssh 目錄下已經(jīng)生成 id_rsa.pub 等文件了。

wKgZPGdsBXyAZkboAAAP3jQzGOU277.png

輸入以下命令,公鑰內(nèi)容將被輸出到終端,然后我們復(fù)制這些內(nèi)容。

cat /root/.ssh/id_rsa.pub

這里以 gitee 為例,我們將公鑰添加到安全設(shè)置的 SSH 公鑰中。

wKgZO2dsBX2AFMdGAAHmuQu86wM518.png

添加完成后我們就可以在控制臺(tái)執(zhí)行命令將我們的項(xiàng)目代碼克隆下來(lái)了。

wKgZPGdsBX6AYn2wAAJoi3aqtI0057.png

安裝 docker

Docker 在 Ubuntu 上依賴(lài)一些軟件包,需要先行安裝。

sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

添加 Docker GPG 密鑰

這是為了驗(yàn)證從 Docker 倉(cāng)庫(kù)下載的軟件包的完整性。

#官方 GPG key (可能?chē)?guó)內(nèi)訪問(wèn)會(huì)存在問(wèn)題)curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg# 阿里源(推薦使用)curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

添加 Docker 官方軟件源

接下來(lái),需要將 Docker 的官方軟件源添加到你的 Ubuntu 系統(tǒng)中。運(yùn)行以下命令(根據(jù)你的 Ubuntu 版本,$(lsb_release -cs)會(huì)自動(dòng)替換為你的 Ubuntu 代號(hào),如 focal、jammy 等):

#Docker 官方源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null#阿里 apt 源 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再次更新軟件包列表

添加完軟件源后,再次運(yùn)行更新命令以確保你的軟件包列表是最新的:

sudo apt updatesudo apt-get update

安裝 docker

#安裝最新版本的 Dockersudo apt install docker-ce docker-ce-cli containerd.io#查看 Docker 版本 docker version#查看所有容器 docker ps -a

項(xiàng)目運(yùn)行

構(gòu)建鏡像

cd 到我們使用 git 拉下來(lái)的項(xiàng)目,如下,包含 Dockerfile 的目錄下

wKgZO2dsBX6ATTPaAAAPaIZEphI565.png

執(zhí)行命令構(gòu)建一個(gè)新的 Docker 鏡像

docker build -t auth .

構(gòu)建成功后執(zhí)行 docker images 查看鏡像,如下我名稱(chēng)為 auth 的鏡像已經(jīng)構(gòu)建完成。

wKgZPGdsBX6AIzpGAAANNagVrQs705.png

運(yùn)行容器

docker run -d -p 8080:8080 --restart=always --name auth auth

-d: 這個(gè)標(biāo)志表示以“分離模式”運(yùn)行容器,也就是說(shuō),容器會(huì)在后臺(tái)運(yùn)行。你不會(huì)直接看到容器的輸出,除非你使用 docker logs命令或其他方法來(lái)查看。

-p 8080:8080: 這個(gè)參數(shù)用于端口映射。它將容器內(nèi)的 8080 端口映射到宿主機(jī)的 8080 端口上。這樣,任何發(fā)送到宿主機(jī) 8080 端口的請(qǐng)求都會(huì)被轉(zhuǎn)發(fā)到容器的 8080 端口上。

--restart=always: 這個(gè)參數(shù)指定了容器的重啟策略。always表示無(wú)論何時(shí)容器停止運(yùn)行(無(wú)論是因?yàn)橥顺鲞€是 Docker 守護(hù)進(jìn)程重啟),Docker 都會(huì)自動(dòng)重啟這個(gè)容器。

運(yùn)行完成后可以執(zhí)行 docker ps 查看容器:

wKgZO2dsBX-ARPo1AACRobB_KuU123.png

新增安全組

打開(kāi)服務(wù)器控制臺(tái),找到我們當(dāng)前的服務(wù)器,點(diǎn)擊名稱(chēng)。

wKgZPGdsBX-AbSToAAHMnbGYb_4498.png

進(jìn)去到詳情后,切換到安全組頁(yè)面,點(diǎn)擊配置規(guī)則。

wKgZO2dsBYCAPlj6AAEzJVrUasI323.png

在入方向規(guī)則下,點(diǎn)擊添加規(guī)則,然后加入我們項(xiàng)目的端口號(hào)。

wKgZPGdsBYCAFKzWAAG-TKZFYGU160.png

訪問(wèn)接口

查看我們的服務(wù)器的 ip 地址

wKgZO2dsBYGAdc2VAAHD8JfT-uU715.png

打開(kāi)瀏覽器,訪問(wèn)我們項(xiàng)目的接口,成功獲取到信息。

wKgZPGdsBYGATetPAAKdLwXbsgo691.png

更新發(fā)布

接下來(lái)我們將接口調(diào)整一下,改為返回一個(gè) hello word!

wKgZO2dsBYGABoaVAADW5i59T8g153.png

提交代碼

wKgZPGdsBYKAO4VvAAGr7AfT9PU446.png

回到服務(wù)器控制臺(tái),執(zhí)行 git pull 拉取最新代碼

wKgZO2dsBYKAB5qqAAAkSiFpryY089.png

使用更新后的代碼重新構(gòu)建 Docker 鏡像。運(yùn)行與之前相同的 docker build 命令

docker build -t auth .

停止并刪除舊的容器。

docker stop auth docker rm auth

使用更新后的鏡像啟動(dòng)一個(gè)新容器。

docker run -d -p 8080:8080 --restart=always --name auth auth

刷新一下我們的瀏覽器,頁(yè)面中返回的信息是 hello word!

wKgZPGdsBYKATVlQAAA7gtA9Wvs248.png


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    207

    瀏覽量

    17065
  • 云服務(wù)器
    +關(guān)注

    關(guān)注

    0

    文章

    841

    瀏覽量

    14749
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    使用Python/MyHDL創(chuàng)建自定義FPGA IP

    使用 Python/MyHDL 創(chuàng)建自定義 FPGA IP,與 Vivado 集成,并通過(guò) PYNQ 進(jìn)行控制——實(shí)現(xiàn)軟件上的簡(jiǎn)單硬件設(shè)計(jì)。
    的頭像 發(fā)表于 04-09 09:53 ?293次閱讀
    使用Python/MyHDL創(chuàng)建<b class='flag-5'>自定義</b>FPGA IP

    MCUXpresso SDK創(chuàng)建自定義清單

    開(kāi)始。 測(cè)試導(dǎo)入和生成項(xiàng)目 此時(shí),自定義 MCUXpresso SDK 清單已準(zhǔn)備就緒,可供使用。要進(jìn)行測(cè)試,請(qǐng)將示例項(xiàng)目導(dǎo)入 MCUXpresso for VS Code 并構(gòu)建它。 - 將
    發(fā)表于 04-07 07:11

    KubePi:開(kāi)源Kubernetes可視化管理面板,集群管理如此簡(jiǎn)單

    。 擴(kuò)展性強(qiáng) :設(shè)計(jì)上考慮了可擴(kuò)展性,允許通過(guò)插件或自定義功能來(lái)擴(kuò)展其能力。 三、安裝部署:多種方式快速上手 KubePi提供了靈活的部署方式,適合從個(gè)人體驗(yàn)到生產(chǎn)環(huán)境的各種場(chǎng)景。 3
    發(fā)表于 02-11 12:53

    采用匯編指示符來(lái)使用自定義指令

    * 使用riscv-nuclei-elf-objdump -d a.out &gt; main.dump命令查看反匯編代碼,結(jié)果如下所示 如圖所示,在指定位置插入了自定義的指令數(shù)據(jù)。 2
    發(fā)表于 10-28 06:02

    強(qiáng)實(shí)時(shí)運(yùn)動(dòng)控制內(nèi)核MotionRT750(九):內(nèi)置C語(yǔ)言的自定義機(jī)械手模型實(shí)現(xiàn)

    內(nèi)置C語(yǔ)言的自定義機(jī)械手模型實(shí)現(xiàn)。
    的頭像 發(fā)表于 10-27 14:14 ?991次閱讀
    強(qiáng)實(shí)時(shí)運(yùn)動(dòng)控制內(nèi)核MotionRT750(九):內(nèi)置<b class='flag-5'>C</b>語(yǔ)言的<b class='flag-5'>自定義</b>機(jī)械手模型實(shí)現(xiàn)

    如何在e203 SOC中添加自定義外設(shè)

    外設(shè)的基地址和連接e203_soc_top信號(hào)使用,并將自定義的外設(shè)正確實(shí)例化在此對(duì)外接口口模塊中。 3、在e203_soc_top中正確實(shí)例化第2步中的對(duì)外接口模塊 4、在system頂層模塊中正確
    發(fā)表于 10-20 10:38

    智能硬件通過(guò)小聆AI自定義MCP應(yīng)用開(kāi)發(fā)操作講解

    以開(kāi)始使用啦 Tip:更新編排并部署后可以開(kāi)關(guān)一下來(lái)快速刷新服務(wù)哦! 更多資料 小聆AI詳細(xì)配置參考:https://docs2.listenai.com/x/S_TEd8h7C
    發(fā)表于 10-14 15:50

    中國(guó)企業(yè)飛向世界,金山辦公+華為聯(lián)手造了“AI協(xié)同直升機(jī)”

    AI協(xié)同辦公,企業(yè)數(shù)智化飛起來(lái)
    的頭像 發(fā)表于 09-16 00:44 ?3467次閱讀
    <b class='flag-5'>讓</b>中國(guó)企業(yè)飛向世界,金山辦公+華為聯(lián)手造了“AI協(xié)同直升機(jī)”

    【M-K1HSE開(kāi)發(fā)板免費(fèi)體驗(yàn)】相關(guān)源碼之閱讀和分析1-使用XComponent + Vsync 實(shí)現(xiàn)自定義動(dòng)畫(huà)

    自定義繪制。 結(jié)合您提供的文件結(jié)構(gòu)截圖和 CMakeLists.txt 內(nèi)容,我們可以非常清晰地梳理出這個(gè)項(xiàng)目的實(shí)現(xiàn)流程、執(zhí)行環(huán)境和核心邏輯。 一、 項(xiàng)目概述與目標(biāo) 從
    發(fā)表于 09-03 16:05

    【VisionFive 2單板計(jì)算機(jī)試用體驗(yàn)】1. 環(huán)境搭建與代碼整編

    /what-is-lll-lock-wait-private-and-what-can-cause-a-hang-while-malloc-consolida 創(chuàng)建一個(gè)文件夾存放docker項(xiàng)目D:\\\\docker_pro\
    發(fā)表于 07-08 23:07

    創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開(kāi)發(fā)板—Docker容器部署方法說(shuō)明

    不會(huì)有任何接口。使用Docker,可像管理應(yīng)用程序一樣管理基礎(chǔ)結(jié)構(gòu)。通過(guò)利用Docker快速發(fā)布
    的頭像 發(fā)表于 07-03 11:00 ?685次閱讀
    創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開(kāi)發(fā)板—<b class='flag-5'>Docker</b>容器<b class='flag-5'>部署</b>方法說(shuō)明

    完整指南:如何使用樹(shù)莓派5、Hailo AI Hat、YOLO、Docker進(jìn)行自定義數(shù)據(jù)集訓(xùn)練?

    今天,我將展示如何使用令人印象深刻的HailoAIHat在樹(shù)莓派5上訓(xùn)練、編譯和部署自定義模型。注意:文章內(nèi)的鏈接可能需要科學(xué)上網(wǎng)。HailoAIHat根據(jù)的設(shè)置,在樹(shù)莓派5的CPU上運(yùn)行YOLO
    的頭像 發(fā)表于 06-28 08:23 ?4966次閱讀
    完整指南:如何使用樹(shù)莓派5、Hailo AI Hat、YOLO、<b class='flag-5'>Docker</b>進(jìn)行<b class='flag-5'>自定義</b>數(shù)據(jù)集訓(xùn)練?

    KiCad 中的自定義規(guī)則(KiCon 演講)

    “ ?Seth Hillbrand 在 KiCon US 2025 上為大家介紹了 KiCad 的規(guī)則系統(tǒng),并詳細(xì)講解了自定義規(guī)則的設(shè)計(jì)與實(shí)例。? ” ? 演講主要圍繞 加強(qiáng) KiCad 中的自定義
    的頭像 發(fā)表于 06-16 11:17 ?2612次閱讀
    KiCad 中的<b class='flag-5'>自定義</b>規(guī)則(KiCon 演講)

    HarmonyOS應(yīng)用自定義鍵盤(pán)解決方案

    自定義鍵盤(pán)是一種替換系統(tǒng)默認(rèn)鍵盤(pán)的解決方案,可實(shí)現(xiàn)鍵盤(pán)個(gè)性化交互。允許用戶(hù)結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對(duì)按鍵布局進(jìn)行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護(hù)層面,自定義鍵盤(pán)可以
    的頭像 發(fā)表于 06-05 14:19 ?2672次閱讀

    參考STM32 MPU生態(tài)資源利用Yocto構(gòu)建STM32MP2芯片鏡像運(yùn)行docker

    X-LINUX-AZURE_Distribution_Package指南 https://wiki.stmicroelectronics.cn/stm32mpu/wiki/X-LINUX-AZURE_Distribution_Package
    發(fā)表于 05-10 16:47
    色达县| 团风县| 泾源县| 闵行区| 吴忠市| 秦安县| 琼海市| 绥滨县| 长子县| 文化| 湘乡市| 封丘县| 宁海县| 盐池县| 宣武区| 平潭县| 原平市| 呼玛县| 民县| 布拖县| 四平市| 太谷县| 大港区| 馆陶县| 洪雅县| 都兰县| 牙克石市| 全椒县| 临安市| 类乌齐县| 遂川县| 布拖县| 黄骅市| 淮北市| 萍乡市| 连江县| 甘泉县| 五莲县| 那坡县| 合江县| 新河县|