.Net 8项目部署服务器

1. 环境准备

服务器:X64、Cent OS 7.2

编译器:Visual Studio 2022

2. 项目搭建

新建Dockerfile 文件,没有后缀名。

bash 复制代码
# 构建阶段
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
​
# 将所有文件复制到工作目录
COPY . ./
​
# 构建应用程序
RUN dotnet publish -c Release -r linux-x64 -o out --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true
​
# 运行阶段
FROM mcr.microsoft.com/dotnet/runtime:8.0 AS runtime
WORKDIR /app
COPY --from=build /app/out ./
​
# 指定应用程序入口点
ENTRYPOINT ["./WebAPI-Demo"]

3. Docker环境安装

要在 CentOS 上安装 Docker ,可以按照以下步骤进行:

arduino 复制代码
$ sudo yum remove docker \
              docker-client \
              docker-client-latest \
              docker-common \
              docker-latest \
              docker-latest-logrotate \
              docker-logrotate \
              docker-engine

安装必要的依赖包:确保系统安装了所需的软件包,以便安装 Docker:

kotlin 复制代码
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

添加 Docker 软件包源:将 Docker 软件包源添加到系统中。执行以下命令:

ruby 复制代码
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

启动 Docker 服务:安装完成后,启动 Docker 服务。执行以下命令:

ruby 复制代码
$ sudo systemctl start docker

设置 Docker 开机自启:如果需要 Docker 在系统启动时自动启动,可以执行以下命令:

shell 复制代码
$ sudo systemctl enable docker

验证安装:运行以下命令来验证 Docker 是否已成功安装:

css 复制代码
$ sudo docker --version

运行以下命令以验证 Docker 服务是否正在运行:

lua 复制代码
$ sudo systemctl status docker

4. 运行容器

perl 复制代码
$ docker build -t my-dotnet-app .
  • docker build: 这是用于构建 Docker 镜像的命令。
  • -t my-dotnet-app: 这是一个选项,用于为构建的镜像指定一个标签(tag) ,即镜像的名称。在这个命令中,my-dotnet-app 是镜像的名称。
  • .: 这是构建上下文路径,指定了 Dockerfile 的位置。在这里,. 表示当前目录,即 Dockerfile 所在的目录。Docker 将会在这个目录下查找 Dockerfile 并基于它构建镜像。
ruby 复制代码
$ docker run -d --rm -p <host_port>:<container_port> my-dotnet-app
  • docker run: 这是用于运行 Docker 容器的命令。
  • -d: 这是一个选项,表示以后台(detached)模式运行容器。这意味着容器会在后台运行,并且不会占用当前终端。
  • --rm: 这是一个选项,表示容器在停止后立即删除。这样做可以确保在容器停止后及时清理容器实例,以释放系统资源。
  • -p <host_port>:<container_port>: 这是一个选项,用于将容器内部的端口映射到宿主机上的端口。<host_port> 是宿主机上的端口,<container_port> 是容器内部监听的端口。通过这个选项,可以让外部系统通过宿主机上的端口访问容器中运行的应用程序。
  • my-dotnet-app: 这是要运行的 Docker 镜像的名称。在这个命令中,my-dotnet-app 是要运行的镜像名称。

5. 防火墙和云服务器安全组

开放端口

使用以下命令开放单个端口:

css 复制代码
$ sudo firewall-cmd --zone=public --add-port=<端口号>/tcp --permanent

<端口号> 替换为你想要开放的实际端口号。这个命令将永久性地(即重启后依然有效)将指定的 TCP 端口添加到公共区域的防火墙规则中。

如果你需要开放 UDP 端口,可以将 tcp 替换为 udp

关闭端口

使用以下命令关闭已经开放的端口:

css 复制代码
$ sudo firewall-cmd --zone=public --remove-port=<端口号>/tcp --permanent

同样,将 <端口号> 替换为你要关闭的实际端口号。这个命令将永久性地从公共区域的防火墙规则中移除指定的 TCP 端口。

如果你需要关闭 UDP 端口,同样可以将 tcp 替换为 udp

重新加载防火墙规则

使用以下命令重新加载防火墙规则,使更改生效:

css 复制代码
$ sudo firewall-cmd --reload

这个命令将重新加载防火墙规则,应用任何最新更改。

查看已开放端口

使用以下命令查看当前已经开放的端口列表:

css 复制代码
$ sudo firewall-cmd --zone=public --list-ports

这个命令将列出当前公共区域中已经开放的端口列表。

如果是使用云服务器的话还需要开放云服务器的安全组才能进行访问。

6. 网站访问

bash 复制代码
访问地址:http://ip:port/weatherforecast
相关推荐
追逐时光者1 小时前
.NET 使用 MethodTimer 进行运行耗时统计提升代码的整洁性与可维护性!
后端·.net
你的人类朋友2 小时前
【Node.js】什么是Node.js
javascript·后端·node.js
David爱编程3 小时前
面试必问!线程生命周期与状态转换详解
java·后端
LKAI.4 小时前
传统方式部署(RuoYi-Cloud)微服务
java·linux·前端·后端·微服务·node.js·ruoyi
Victor3564 小时前
Redis(11)如何通过命令行操作Redis?
后端
Victor3564 小时前
Redis(10)如何连接到Redis服务器?
后端
他日若遂凌云志6 小时前
深入剖析 Fantasy 框架的消息设计与序列化机制:协同架构下的高效转换与场景适配
后端
快手技术6 小时前
快手Klear-Reasoner登顶8B模型榜首,GPPO算法双效强化稳定性与探索能力!
后端
二闹6 小时前
三个注解,到底该用哪一个?别再傻傻分不清了!
后端
用户49055816081256 小时前
当控制面更新一条 ACL 规则时,如何更新给数据面
后端