.Net 8项目部署服务器

1,704 阅读3分钟

1. 环境准备

服务器:X64、Cent OS 7.2

编译器:Visual Studio 2022

2. 项目搭建

image-20240408170553543.png

image-20240408170752939.png

新建名为Dockerfile的文件(无后缀),然后把整个目录直接上传服务器。

# 构建阶段
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环境安装

3.1 卸载(可选) :如果之前安装过旧版本的Docker ,可以使用下面命令卸载:
yum remove docker \
          docker-client \
          docker-client-latest \
          docker-common \
          docker-latest \
          docker-latest-logrotate \
          docker-logrotate \
          docker-selinux \
          docker-engine-selinux \
          docker-engine \
          docker-ce
3.2 安装必要的依赖包:确保系统安装了所需的软件包,以便安装 Docker:
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
3.3 添加 Docker 软件包源:将 Docker 软件包源添加到系统中。执行以下命令:
# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
​
yum makecache fast
3.4 安装Docker-CE:docker-ce为社区免费版本。稍等片刻,docker即可安装成功。
yum install -y docker-ce
3.5 启动 Docker 服务:安装完成后,启动 Docker 服务。执行以下命令:
# 启动docker服务
systemctl start docker
# 停止docker服务
systemctl stop docker  
# 重启docker服务
systemctl restart docker
# 设置 Docker 开机自启
sudo systemctl enable docker
# 验证安装
sudo docker --version
# 验证 Docker 服务是否正在运行
sudo systemctl status docker

4. 管理防火墙

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
# 开放端口,如果你需要开放 `UDP`  端口,可以将 `tcp` 替换为 `udp`。
sudo firewall-cmd --zone=public --add-port=<端口号>/tcp --permanent
# 关闭端口
sudo firewall-cmd --zone=public --remove-port=<端口号>/tcp --permanent
# 重新加载防火墙规则
sudo firewall-cmd --reload
# 查看已开放端口
sudo firewall-cmd --zone=public --list-ports

5. 构建镜像

docker build -t my-dotnet-app .
  • docker build: 这是用于构建 Docker 镜像的命令。
  • -t my-dotnet-app: 这是一个选项,用于为构建的镜像指定一个标签(tag) ,即镜像的名称。在这个命令中,my-dotnet-app 是镜像的名称。
  • .: 这是构建上下文路径,指定了 Dockerfile 的位置。在这里,. 表示当前目录,即 Dockerfile 所在的目录。Docker 将会在这个目录下查找 Dockerfile 并基于它构建镜像。

6. 运行容器

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 是要运行的镜像名称。

7. 网站访问

访问地址:http://ip:port/weatherforecast

image-20240409100625086.png