.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 小时前
[特殊字符] 基于Docker部署Nacos注册中心及微服务注册发现详解(含MySQL持久化配置)
分布式·mysql·docker·微服务·容器
青年vs阳光3 小时前
Centos离线安装Docker(无坑版)
linux·docker·centos
小马爱打代码7 小时前
K8S - GitOps 入门实战 - 自动发布与秒级回滚
云原生·容器·kubernetes
jk英菲尼迪8 小时前
Windows系统安装Docker(Win10系统升级,然后安装)
运维·docker·容器
有梦想的攻城狮10 小时前
spring中的@Configuration注解详解
java·后端·spring·configuration·配置类
言之。10 小时前
Go语言中的错误处理
开发语言·后端·golang
野生绿箭侠11 小时前
Docker 部署 flink1.19.2
运维·docker·容器
优雅的落幕13 小时前
【SpringBoot】基于mybatisPlus的博客管理系统(2)
java·spring boot·后端
小马爱打代码13 小时前
K8S - 命名空间实战 - 从资源隔离到多环境管理
云原生·容器·kubernetes
qq74223498414 小时前
AI开发者的Docker实践:汉化(中文),更换镜像源,Dockerfile,部署Python项目
python·docker·容器