《ASP.NET Core 与 RESTful API 开发实战》-- (第10章)-- 读书笔记

2021-01-13 15:47:41 浏览数 (1)

第 10 章 部署

10.1 部署到 IIS

ASP.NET Core 应用程序支持部署到 IIS 中,之后它将作为应用程序的反向代理服务器和负载均衡器,向应用程序中转传入的 HTTP 请求

默认情况下,ASP.NET Core 项目的 Program 类使用如下方式创建 WebHost

代码语言:javascript复制
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });

CreateDefaultBuilder 方法将会调用 UseIIS 方法和 UseIISIntergration 方法,分别用于 IIS 进程内托管方式以及 IIS 进程外托管方式

无论使用哪一种部署方式,都应该先发布应用

发布 ASP.NET Core 应用程序有两种方式,分别是使用 Visual Studio 中的发布向导以及使用 .NET Core CLI 命令

首先通过发布向导发布到指定文件夹,接着配置 IIS,需要确保当前计算机已经安装了 IIS 以及 IIS 管理控制台,完成配置之后访问网站,将会打开 Swagger 文档页面,说明网站已经正常运行

目前,应用程序进能够通过 HTTP 方式访问,要使它在 IIS 中支持 HTTPS,还需要进行一些配置,包含证书设置、HTTPS 绑定和 HTTPS 重定向

当使用 HTTP 协议访问时,IIS 并不会进行 HTTPS 重定向,为了支持这一功能,需要安装“URL 重写”工具

10.2 部署到 Docker

Docker 是一个开源项目,目标是提供轻量级的操作系统虚拟化解决方案

由于容器使用沙箱机制,多个容器实例之间互不影响,因而可以将应用程序同时部署到多个容器中并同时运行

镜像与容器是 Docker 中两个非常重要的概念,简单来说,镜像是用于创建容器的模板,Docker 容器则是通过镜像创建的应用程序实例

Docker 支持多个平台,包含 Windows、Linux 和 macOS 系统,Windows 10 可以通过下载“Docker for Windows”使用

在 Windows 操作系统中安装并使用 Docker,应首先启用 Hyper-V 功能,Hyper-V 能够使 Linux 容器运行在 Windows 系统上,这是 Docker 安装与运行所必需的

对于 Windwos 系统,Docker 会安装 Linux 虚拟机,以便在 Windows 操作系统中能够运行并创建基于 Linux 的容器

Dokcer 提供了一系列用于操作镜像和容器的命令

操作 Docker 镜像的命令:

  • docker build 创建
  • docker images 列出镜像
  • docker pull 下载镜像
  • docker push 发布镜像
  • docker tag 指定标签
  • docker rmi 删除镜像

操作 Docker 容器的命令:

  • docker create 创建容器
  • docker start 启动容器
  • docker run 创建并启动
  • docker stop 停止
  • docker rm 删除
  • docker ps 列出正在运行的容器
  • docker logs 查看日志
  • docker exec 在运行的容器中执行命令或启动交互式会话

docker create 命令和 docker run 命令支持的参数

  • --name 指定容器名称
  • -p,--publish 将主机的端口映射到容器的端口
  • --rm 当容器停止运行后,使 Docker 自动删除该容器
  • -v,--volume 为容器中的指定目录提供数据卷
  • -e,-env 为容器提供环境变量
  • -i 以交互模式运行容器,通常与-t同时使用

Docker Compose 简介

当应用程序依赖多个服务时,如数据库和缓存等,要将其部署到容器中,也可以使用 Docker 命令以及 Docker 网络实现,但是会比较烦琐且极容易出错

为此,Docker 提供了 Docker Compose,也称为 Docker 容器编排,它是一个用来描述复杂的应用程序的工具,这些复杂应用通常需要创建多个容器,并使用 Docker 数据卷与 Docker 网络等;此外,它还可以编排并管理多个容器,能够简化部署复杂应用程序到容器的操作,且不易出错

0 人点赞