当前位置: 首页 > article >正文

asp.net core框架搭建4-部署IIS/Nginx/Docker

文章目录

  • 系列文章
  • 一、Linux上部署Nginx
    • 1.1 Centos 安装配置环境
    • 1.2 使用Systemctl 控制Nginx
  • 二、部署IIS
  • 三、部署Docker
    • 3.1 创建 Dockerfile 文件
    • 3.2 构建 Docker 镜像
    • 3.3 运行 Docker 容器
    • 3.4 检查容器运行情况
  • 结束语

作者:xcLeigh
文章地址:https://blog.csdn.net/weixin_43151418/article/details/131459091


asp.net core框架搭建4-部署IIS/Nginx/Docker ,下面让咋们一起来部署webapi到IIS和nginx/Docker,将一步步带着大家,实现目标。所有操作过程将展现在本篇文章,下面咋们一起来实现它吧。

系列文章

  • asp.net core 框架搭建1-搭建webapi
  • asp.net core 框架搭建2-搭建MVC后台管理系统
  • asp.net core 框架搭建3-搭建个人博客,公司官网
  • asp.net core 框架搭建4-部署IIS/nguix

一、Linux上部署Nginx

项目使用的是 - asp.net core 框架搭建1-搭建webapi ,这篇文章的项目打包。

1.1 Centos 安装配置环境

//第一步 安装nginx
yum install -y nginx

//第二步 安装asp.net core运行包
yum install -y aspnetcore-runtime-6.0.x86_64 

//第三步 设置nginx开机自启动
systemctl enable nginx

//第四步 打开防火墙端口
firewall-cmd --add-port=80/tcp --permanent    //命令永久打开

//第五步 运行dotnet应用
 dotnet Webapi.dll  --urls="http://*:5000"

1.2 使用Systemctl 控制Nginx

//启动nginx服务
systemctl start nginx

//停止服务
systemctl stop nginx

//重新启动服务
systemctl restart nginx

//查看所有已启动的服务
systemctl list-units --type=service

//查看服务当前状态
systemctl status nginx

//设置开机自启动
systemctl enable nginx

//停止开机自启动
systemctl disable nginx

二、部署IIS

项目使用的是 - asp.net core 框架搭建1-搭建webapi ,这篇文章的项目打包。

1 安装IIS和Net6 runtime bundle.exe (包括了runtime和iis支持)

2 复制发布的文件文件到网站目录

3 添加上传ssl证书或者使用iis创建自定义证书

4 在iis去除勾选ssl,绑定ssl端口到网站,并配置iis证书

5 测试,输入http://url会直接302跳转到https://url

三、部署Docker

项目使用的是 - asp.net core 框架搭建1-搭建webapi ,这篇文章的项目打包。

3.1 创建 Dockerfile 文件

在ASP.NET Core 项目的根目录下创建一个名为Dockerfile的文件。这个文件用于定义 Docker 镜像的构建规则。
基本内容示例:

FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build
WORKDIR /src
COPY ["YourProject.csproj", ""]
RUN dotnet restore "./YourProject.csproj"
COPY..
WORKDIR "/src/YourProject"
RUN dotnet build "YourProject.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "YourProject.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish.
ENTRYPOINT ["dotnet", "YourProject.dll"]

解释:

  • 第一部分(FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base):以ASP.NET Core 运行时镜像为基础镜像,版本为 7.0。WORKDIR /app设置工作目录为/app,EXPOSE 80和EXPOSE 443表示容器内部的应用将在这两个端口上监听。
  • 第二部分(FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build):以ASP.NET Core SDK 镜像为基础进行构建。首先设置工作目录为/src,然后复制项目文件(COPY ["YourProject.csproj", ""]),运行dotnet restore来恢复项目依赖。接着复制整个项目目录(COPY…),并构建项目(RUN dotnet build),输出到/app/build目录。
  • 第三部分(FROM build AS publish):从构建阶段继承,发布项目到/app/publish目录。
  • 第四部分(FROM base AS final):从最初的运行时基础镜像继承,将发布的文件复制到运行时容器的/app目录,并设置应用的入口点为dotnet YourProject.dll。

3.2 构建 Docker 镜像

打开命令行工具,导航到包含Dockerfile的项目目录。
运行命令docker build -t your - image - name:tag.,例如docker build -t myaspnetapp:latest.
这个命令会根据Dockerfile中的指令构建一个名为myaspnetapp,标签为latest的 Docker 镜像。构建过程可能需要一些时间,具体取决于项目的大小和网络速度,因为它需要下载基础镜像和相关的依赖。

3.3 运行 Docker 容器

构建好镜像后,可以通过命令docker run -d -p 8080:80 your - image - name:tag来运行容器。例如docker run -d -p 8080:80 myaspnetapp:latest

解释:

  • -d表示容器在后台运行(detached mode)。
  • -p 8080:80是端口映射,将主机的 8080 端口映射到容器内部的 80 端口。这样,当访问主机的 8080 端口时,请求会被转发到容器内应用监听的 80 端口。

3.4 检查容器运行情况

    可以使用docker ps命令来查看正在运行的容器。它会显示容器的 ID、镜像名称、创建时间、状态等信息。

    如果应用在容器内出现问题,可以通过docker logs container - id来查看容器的日志。将container - id替换为实际的容器 ID,日志信息可以帮助诊断应用启动或运行过程中的错误。

结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


     💢 关注博主 带你实现畅游前后端

     🏰 加入社区 带你体验马航不孤单

     💯 神秘个人简介 带你体验不一样得介绍

     💘 为爱表白 为你那个TA,体验别致的浪漫惊喜

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh(所有权归作者所有),https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/131459091(防止抄袭,原文地址不可删除)


http://www.kler.cn/a/469596.html

相关文章:

  • Flutter鸿蒙化 在鸿蒙应用中添加Flutter页面
  • Element-UI:如何实现表格组件el-table多选场景下根据数据对某一行进行禁止被选中?
  • 2. 模型和算法
  • 轻量级通信协议 JSON-RPC 2.0 详解
  • 用公网服务代理到本地电脑笔记
  • 华为 Sensor 省电策略调研
  • 【AutoSAR】【底软自动化】Arxml自动配置平台
  • 青少年编程与数学 02-006 前端开发框架VUE 01课题、VUE简介
  • 二叉树相关的题,判断二叉树是否是单值二叉树,相同的树,对称二叉树,另一棵树的子树,KY11 二叉树遍历
  • 数据结构-单链表(C语言版)
  • AutoSar架构学习笔记
  • 跨年战揭开本地生活新赛季:美团、抖音和快手争夺冰雪经济
  • 每天40分玩转Django:Django实战 - 在线打印服务系统
  • 基于Python读取ZIP和TAR格式压缩包教程
  • 《Vue3实战教程》35:Vue3测试
  • 概述(讲讲python基本语法和第三方库)
  • SkinnedMeshRenderer相关知识
  • Linux下ssh远程命令详解及示例
  • 反规范化带来的数据不一致问题的解决方案
  • SQL拦截器 翻译整个sql语句
  • STM32学习(四)
  • Multisim更新:振幅调制器+解调器(含仿真程序+文档+原理图+PCB)
  • OceanBase到MySQL实时同步方案
  • 【JVM】总结篇-类的加载篇之 类的加载器 和ClassLoader分析
  • 如何排查 Apache Doris 中 “Failed to commit txn“ 导入失败问题?
  • QML学习(七) 学习QML时,用好Qt设计器,快速了解各个组件的属性