Flexus X 实例 C#/.Net Core 结合(git 代码管理、docker 自定义镜像)快速发布部署 - 让你的项目飞起来~

电子说

1.3w人已加入

描述

前言

���云端部署新体验,C# Web API 遇上 Git Docker,828 B2B 企业节特惠来袭!Flexus X 实例,为您的 C#应用提供强大支撑,结合 Git 版本控制与 Docker 容器化部署,实现代码高效管理与无缝迁移。即刻行动,让您的 Web 服务更加稳定、高效,领跑数字化转型之路!

���本实验深入演示了如何在 Ubuntu 环境中,利用 Git 进行版本控制管理代码,并通过 Docker 技术自定义构建镜像,从而实现项目从代码到应用的快速构建、打包与部署流程。这一流程不仅提升了开发效率,还确保了环境的一致性与可重复性。

环境准备

购买服务器配置

本次实验使用的是 Flexus 云服务器 X 实例 服务器。

Git

在性能设置中我选择了自定义模式,使用了 4vCPUs | 12GiB,镜像我选用的是最高版本的 ubuntu

Git

打开 xshell,使用购买的服务器的公网 IP 地址,和设置的密码,连接上我们的服务器。

Git

项目部署

项目准备(Dockerfile 文件)

我这里以 c#为例,新建一个 .net8.0 的 Web API 项目

Git

这个新建的官网的 webApi 项目自带一个接口 weatherforecast 接口,可以获取到最近的天气,因为本篇主要目的是如何使用 git+docker 在服务器上发布,因此不做太多改动。本地启动一下,成功访问到,我们稍后将这个程序部署到服务器上。

Git

因为我们后面采用 Git 方式来发布应用,因此在 gitee 上新建仓库,将代码上传上去。

在项目路径下新建一个 Dockerfile 文件,内容如下(根据自己的解决方案名称、构建环境,如.net 6.0、7.0 等版本,亦或是其他语言,对以下代码就行调整,本部署方式适用于其他编程语言或其他版本的.net)

Git

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 用于构建一个 ASP.NET Core 应用程序的 Docker 镜像

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base:从 Microsoft Container Registry (MCR) 拉取 ASP.NET Core 8.0 的官方运行时镜像作为基础镜像,并将其标记为 base。这个镜像包含了运行 ASP.NET Core 应用程序所需的一切,但不包含构建工具。

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build:从 Microsoft Container Registry 拉取 ASP.NET Core 8.0 的官方 SDK 镜像,用于构建应用程序。这个镜像包含了构建.NET 应用程序所需的一切工具。

通过这种方式,Dockerfile 利用了 Docker 的多阶段构建特性,确保了构建过程中只包含必要的工具(在构建阶段使用 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

如果控制台输入结果像我一样

Git

.ssh 文件夹是存在的,没有看到 id_rsa 和 id_rsa.pub 文件,说明没有包含任何 SSH 密钥。那么你需要生成一个新的 SSH 密钥对。

chmod 700 /root/.ssh//更改 /root/.ssh 目录的权限,700 意味着只有目录的所有者 ssh-keygen -t rsa -b 4096 -C "你的邮箱地址"

命令执行后,它会询问你“Enter file in which to save the key (/root/.ssh/id_rsa):”,这是在询问你希望将生成的私钥保存在哪个文件中。默认情况下,它会建议你保存在/root/.ssh/id_rsa

直接按回车键,它会接受默认的文件名/root/.ssh/id_rsa 来保存私钥

接下来,会要求你输入一个密码(passphrase)来保护私钥。这是一个可选步骤,如果你不想设置密码,只需再次按回车键即可跳过此步骤

Git

再次输入 ls -al ~/.ssh,可以看到.ssh 目录下已经生成 id_rsa.pub 等文件了。

Git

输入以下命令,公钥内容将被输出到终端,然后我们复制这些内容。

cat /root/.ssh/id_rsa.pub

这里以 gitee 为例,我们将公钥添加到安全设置的 SSH 公钥中。

Git

添加完成后我们就可以在控制台执行命令将我们的项目代码克隆下来了。

Git

安装 docker

Docker 在 Ubuntu 上依赖一些软件包,需要先行安装。

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

添加 Docker GPG 密钥

这是为了验证从 Docker 仓库下载的软件包的完整性。

#官方 GPG key (可能国内访问会存在问题)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 系统中。运行以下命令(根据你的 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

项目运行

构建镜像

cd 到我们使用 git 拉下来的项目,如下,包含 Dockerfile 的目录下

Git

执行命令构建一个新的 Docker 镜像

docker build -t auth .

构建成功后执行 docker images 查看镜像,如下我名称为 auth 的镜像已经构建完成。

Git

运行容器

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

-d: 这个标志表示以“分离模式”运行容器,也就是说,容器会在后台运行。你不会直接看到容器的输出,除非你使用 docker logs 命令或其他方法来查看。

-p 8080:8080: 这个参数用于端口映射。它将容器内的 8080 端口映射到宿主机的 8080 端口上。这样,任何发送到宿主机 8080 端口的请求都会被转发到容器的 8080 端口上。

--restart=always: 这个参数指定了容器的重启策略。always 表示无论何时容器停止运行(无论是因为退出还是 Docker 守护进程重启),Docker 都会自动重启这个容器。

运行完成后可以执行 docker ps 查看容器:

Git

新增安全组

打开服务器控制台,找到我们当前的服务器,点击名称。

Git

进去到详情后,切换到安全组页面,点击配置规则。

Git

在入方向规则下,点击添加规则,然后加入我们项目的端口号。

Git

访问接口

查看我们的服务器的 ip 地址

Git

打开浏览器,访问我们项目的接口,成功获取到信息。

Git

更新发布

接下来我们将接口调整一下,改为返回一个 hello word!

Git

提交代码

Git

回到服务器控制台,执行 git pull 拉取最新代码

Git

使用更新后的代码重新构建 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!

Git


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分