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

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

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

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

jf_21561199 ? 來源:jf_21561199 ? 作者:jf_21561199 ? 2024-12-25 21:15 ? 次閱讀

前言

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

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

環(huán)境準備

購買服務(wù)器配置

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

wKgZPGdsBXmALG2KAACgmvlB9Hk561.png

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

wKgZO2dsBXqAV5RzAAECo10_NbQ658.png

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

wKgZPGdsBXqAS1FJAAM3QAKAdTA860.png

項目部署

項目準備(Dockerfile 文件)

我這里以 c#為例,新建一個 .net8.0 的 Web API 項目

wKgZO2dsBXqADCYuAAIcuQ2rRRQ461.png

這個新建的官網(wǎng)的 webApi 項目自帶一個接口 weatherforecast 接口,可以獲取到最近的天氣,因為本篇主要目的是如何使用 git+docker 在服務(wù)器上發(fā)布,因此不做太多改動。本地啟動一下,成功訪問到,我們稍后將這個程序部署到服務(wù)器上。

wKgZPGdsBXuAIdYJAAFR6UZiexs157.png

因為我們后面采用 Git 方式來發(fā)布應(yīng)用,因此在 gitee 上新建倉庫,將代碼上傳上去。

在項目路徑下新建一個 Dockerfile 文件,內(nèi)容如下(根據(jù)自己的解決方案名稱、構(gòu)建環(huán)境,如.net 6.0、7.0 等版本,亦或是其他語言,對以下代碼就行調(diào)整,本部署方式適用于其他編程語言或其他版本的.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)建一個 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 的官方運行時鏡像作為基礎(chǔ)鏡像,并將其標記為 base。這個鏡像包含了運行 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òu)建.NET 應(yīng)用程序所需的一切工具。

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

Git 部署并拉取代碼

安裝 Git

打開終端,然后輸入以下命令來安裝 Git

sudo apt update sudo apt install git

配置 Git 用戶信息

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

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

SSH 密鑰

雖然你可以通過 HTTPS URL 克隆倉庫,但使用 SSH 密鑰可以更安全地訪問你的倉庫。

檢查是否已存在 SSH 密鑰:

ls -al ~/.ssh

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

wKgZPGdsBXyAPn0xAAANOB5hzzY027.png

.ssh文件夾是存在的,沒有看到 id_rsa和 id_rsa.pub文件,說明沒有包含任何 SSH 密鑰。那么你需要生成一個新的 SSH 密鑰對。

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

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

直接按回車鍵,它會接受默認的文件名/root/.ssh/id_rsa來保存私鑰

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

wKgZO2dsBXyAN6DeAAAsoINA_RU996.png

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

wKgZPGdsBXyAZkboAAAP3jQzGOU277.png

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

cat /root/.ssh/id_rsa.pub

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

wKgZO2dsBX2AFMdGAAHmuQu86wM518.png

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

wKgZPGdsBX6AYn2wAAJoi3aqtI0057.png

安裝 docker

Docker 在 Ubuntu 上依賴一些軟件包,需要先行安裝。

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

添加 Docker GPG 密鑰

這是為了驗證從 Docker 倉庫下載的軟件包的完整性。

#官方 GPG key (可能國內(nèi)訪問會存在問題)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 官方軟件源

接下來,需要將 Docker 的官方軟件源添加到你的 Ubuntu 系統(tǒng)中。運行以下命令(根據(jù)你的 Ubuntu 版本,$(lsb_release -cs)會自動替換為你的 Ubuntu 代號,如 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

再次更新軟件包列表

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

sudo apt updatesudo apt-get update

安裝 docker

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

項目運行

構(gòu)建鏡像

cd 到我們使用 git 拉下來的項目,如下,包含 Dockerfile 的目錄下

wKgZO2dsBX6ATTPaAAAPaIZEphI565.png

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

docker build -t auth .

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

wKgZPGdsBX6AIzpGAAANNagVrQs705.png

運行容器

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

-d: 這個標志表示以“分離模式”運行容器,也就是說,容器會在后臺運行。你不會直接看到容器的輸出,除非你使用 docker logs命令或其他方法來查看。

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

--restart=always: 這個參數(shù)指定了容器的重啟策略。always表示無論何時容器停止運行(無論是因為退出還是 Docker 守護進程重啟),Docker 都會自動重啟這個容器。

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

wKgZO2dsBX-ARPo1AACRobB_KuU123.png

新增安全組

打開服務(wù)器控制臺,找到我們當前的服務(wù)器,點擊名稱。

wKgZPGdsBX-AbSToAAHMnbGYb_4498.png

進去到詳情后,切換到安全組頁面,點擊配置規(guī)則。

wKgZO2dsBYCAPlj6AAEzJVrUasI323.png

在入方向規(guī)則下,點擊添加規(guī)則,然后加入我們項目的端口號。

wKgZPGdsBYCAFKzWAAG-TKZFYGU160.png

訪問接口

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

wKgZO2dsBYGAdc2VAAHD8JfT-uU715.png

打開瀏覽器,訪問我們項目的接口,成功獲取到信息。

wKgZPGdsBYGATetPAAKdLwXbsgo691.png

更新發(fā)布

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

wKgZO2dsBYGABoaVAADW5i59T8g153.png

提交代碼

wKgZPGdsBYKAO4VvAAGr7AfT9PU446.png

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

wKgZO2dsBYKAB5qqAAAkSiFpryY089.png

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

docker build -t auth .

停止并刪除舊的容器。

docker stop auth docker rm auth

使用更新后的鏡像啟動一個新容器。

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

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

wKgZPGdsBYKATVlQAAA7gtA9Wvs248.png


審核編輯 黃宇

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

    關(guān)注

    0

    文章

    203

    瀏覽量

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

    關(guān)注

    0

    文章

    783

    瀏覽量

    13618
收藏 人收藏

    評論

    相關(guān)推薦

    華為云 Flexus X 實例云服務(wù)器部署即時通訊 IM 項目

    @TOC ? 寫在前面 手里拿到了一臺 華為云 Flexus X 實例 的云服務(wù)器,部署部署項目
    的頭像 發(fā)表于 02-07 10:15 ?271次閱讀
    華為云 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>云服務(wù)器<b class='flag-5'>部署</b>即時通訊 IM <b class='flag-5'>項目</b>

    云服務(wù)器 Flexus X 實例:one-api 部署,支持眾多大模型

    、開發(fā)測試環(huán)境、游戲服務(wù)器、音視頻服務(wù)等中低負載場景。相較于 Flexus 應(yīng)用服務(wù)器 L 實例,Flexus 云服務(wù)器 X 實例的優(yōu)勢包含
    的頭像 發(fā)表于 02-06 17:35 ?402次閱讀
    云服務(wù)器 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>:one-api <b class='flag-5'>部署</b>,支持眾多大模型

    華為云 Flexus X 實例:極速搭建個人代碼倉庫 GitLab 平臺

    ? 目錄 前言 1 一、Flexus 云服務(wù)器 X 介紹 1 1.1 Flexus 云服務(wù)器 X 實例簡介 1 1.2
    的頭像 發(fā)表于 01-23 18:29 ?284次閱讀
    華為云 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>:極速搭建個人<b class='flag-5'>代碼</b>倉庫 GitLab 平臺

    Flexusx 實例與 Harbor 私有鏡像倉庫的完美結(jié)合

    。Harbor 作為領(lǐng)先的私有鏡像倉庫,與 Flexus X 完美結(jié)合,助力企業(yè)輕松管理 Docker
    的頭像 發(fā)表于 01-22 18:04 ?260次閱讀
    Flexusx <b class='flag-5'>實例</b>與 Harbor 私有<b class='flag-5'>鏡像</b>倉庫的完美<b class='flag-5'>結(jié)合</b>

    Flexus 云服務(wù)器 X 實例部署 Docker 管理儀表板 DweebUI

    出強大的運算和適應(yīng)能力。當這樣強大的云服務(wù)器與 DweebUI 這個功能豐富的容器管理 WebUI 相結(jié)合時,必然為容器管理帶來高效、便捷且創(chuàng)新的解決方案。 一、Flexus 云服務(wù)器
    的頭像 發(fā)表于 01-14 09:27 ?743次閱讀
    <b class='flag-5'>Flexus</b> 云服務(wù)器 <b class='flag-5'>X</b> <b class='flag-5'>實例</b><b class='flag-5'>部署</b> <b class='flag-5'>Docker</b> <b class='flag-5'>管理</b>儀表板 DweebUI

    Flexus 云服務(wù)器 X 實例安裝 Docker 管理工具 Portainer

    。在此強大平臺上部署如 Portainer CE 這樣的容器管理工具,不僅能夠極大地簡化 Docker 環(huán)境的管理流程,還能進一步提升運維效率與自動化水平,
    的頭像 發(fā)表于 01-13 18:46 ?667次閱讀
    <b class='flag-5'>Flexus</b> 云服務(wù)器 <b class='flag-5'>X</b> <b class='flag-5'>實例</b>安裝 <b class='flag-5'>Docker</b> <b class='flag-5'>管理</b>工具 Portainer

    云服務(wù)器 Flexus X 實例,Docker 集成搭建 YesPlayMusic 網(wǎng)易云音樂播放器

    配置鏡像加速 1、購買華為云 Flexus X 實例 Flexus云服務(wù)器X
    的頭像 發(fā)表于 01-13 18:17 ?403次閱讀
    云服務(wù)器 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>,<b class='flag-5'>Docker</b> 集成搭建 YesPlayMusic 網(wǎng)易云音樂播放器

    云服務(wù)器 Flexus X 實例,Docker 集成搭建 Grafana 開源數(shù)據(jù)可視化平臺

    的用戶界面,用戶可以輕松創(chuàng)建和自定義動態(tài)儀表板,以實時展示關(guān)鍵指標和數(shù)據(jù)趨勢 華為云端口放行 ??服務(wù)器放行對應(yīng)端口 9955 Docker 安裝并配置鏡像加速 1、購買華為云 Flexus
    的頭像 發(fā)表于 01-13 15:50 ?305次閱讀
    云服務(wù)器 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>,<b class='flag-5'>Docker</b> 集成搭建 Grafana 開源數(shù)據(jù)可視化平臺

    云服務(wù)器 Flexus X 實例,Docker 集成搭建 NGINX

    Docker 集成搭建 NGINX 1、購買華為云 Flexus X 實例 Flexus云服務(wù)器X
    的頭像 發(fā)表于 01-13 11:09 ?847次閱讀
    云服務(wù)器 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>,<b class='flag-5'>Docker</b> 集成搭建 NGINX

    云服務(wù)器 Flexus X 實例:RAG 開源項目 FastGPT 部署,玩轉(zhuǎn)大模型

    倍性能,旗艦體驗,覆蓋高科技、零售、金融、游戲等行業(yè)大多數(shù)通用工作負載場景,完全可以支持 FastGPT 的部署、運行和使用,而且,Flexus 云服務(wù)器 X 實例 能夠提供完備的產(chǎn)品
    的頭像 發(fā)表于 01-08 11:49 ?819次閱讀
    云服務(wù)器 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>:RAG 開源<b class='flag-5'>項目</b> FastGPT <b class='flag-5'>部署</b>,玩轉(zhuǎn)大模型

    華為云 Flexus 云服務(wù)器 X 實例之 openEuler 系統(tǒng)部署 Docker Compose 管理工具 Dockge

    docker-compose.yaml 部署文件時,Dockge 以其精美的設(shè)計和易用性脫穎而出,成為不可或缺的管理工具。利用華為云 Flexus 云服務(wù)器
    的頭像 發(fā)表于 01-08 11:41 ?482次閱讀
    華為云 <b class='flag-5'>Flexus</b> 云服務(wù)器 <b class='flag-5'>X</b> <b class='flag-5'>實例</b>之 openEuler 系統(tǒng)<b class='flag-5'>部署</b> <b class='flag-5'>Docker</b> Compose <b class='flag-5'>管理</b>工具 Dockge

    云端代碼管理新體驗,華為云 Flexus X 實例上 GitLab 部署與使用的實戰(zhàn)指南云端代碼管理新體驗

    前言**** 華為云 Flexus X 云服務(wù)器攜手 GitLab,為開發(fā)者和企業(yè)帶來了云端部署的全新選擇。Flexus X
    的頭像 發(fā)表于 01-07 17:05 ?441次閱讀
    云端<b class='flag-5'>代碼</b><b class='flag-5'>管理</b>新體驗,華為云 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>上 GitLab <b class='flag-5'>部署</b>與使用的實戰(zhàn)指南云端<b class='flag-5'>代碼</b><b class='flag-5'>管理</b>新體驗

    云服務(wù)器 Flexus X 實例部署 Gitea,擁有自己的 Git 倉庫,管理本地代碼

    、零售、金融、游戲等眾多領(lǐng)域的通用工作負載需求。本文旨在詳細闡述如何高效利用“云服務(wù)器 Flexus X 實例”,包括如何在其中從零開始,通過安裝相關(guān)依賴、安裝 Docker、安裝 G
    的頭像 發(fā)表于 01-07 16:59 ?294次閱讀
    云服務(wù)器 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>:<b class='flag-5'>部署</b> Gitea,擁有自己的 <b class='flag-5'>Git</b> 倉庫,<b class='flag-5'>管理</b>本地<b class='flag-5'>代碼</b>

    云服務(wù)器 Flexus X 實例:輕量級 http 服務(wù)器 Tinyhttpd 部署

    ?來體驗?Flexus 云服務(wù)器 X 實例?。 一、云服務(wù)器 Flexus 首先,進入官網(wǎng)購買?Flexus 云服務(wù)器
    的頭像 發(fā)表于 01-07 16:59 ?375次閱讀
    云服務(wù)器 <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b>:輕量級 http 服務(wù)器 Tinyhttpd <b class='flag-5'>部署</b>

    Flexus X 實例 Docker+Jenkins+gitee 實現(xiàn) CICD 自動化部署 - 解放的雙手~

    前言 828 B2B 企業(yè)節(jié)特惠來襲,Flexus X 實例引領(lǐng)自動化部署新紀元!Docker 攜手 Jenkins 與 Gitee,共創(chuàng)
    的頭像 發(fā)表于 12-26 18:19 ?380次閱讀
    <b class='flag-5'>Flexus</b> <b class='flag-5'>X</b> <b class='flag-5'>實例</b> <b class='flag-5'>Docker</b>+Jenkins+gitee 實現(xiàn) CICD 自動化<b class='flag-5'>部署</b> - 解放<b class='flag-5'>你</b>的雙手~

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術(shù)信息
    • 參加活動獲取豐厚的禮品