夜猫子的知识栈 夜猫子的知识栈
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夜猫子

前端练习生
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《Web Api》
    • 《ES6教程》
    • 《Vue》
    • 《React》
    • 《TypeScript》
    • 《Git》
    • 《Uniapp》
    • 小程序笔记
    • 《Electron》
    • JS设计模式总结
  • 《前端架构》

    • 《微前端》
    • 《权限控制》
    • monorepo
  • 全栈项目

    • 任务管理日历
    • 无代码平台
    • 图书管理系统
  • HTML
  • CSS
  • Nodejs
  • Midway
  • Nest
  • MySql
  • 其他
  • 技术文档
  • GitHub技巧
  • 博客搭建
  • Ajax
  • Vite
  • Vitest
  • Nuxt
  • UI库文章
  • Docker
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 任务管理日历

    • 前言
    • 前端搭建

    • 后端搭建

    • 部署前置篇
    • 前端部署

    • 后端部署

      • 单机部署
      • GitLab CICD
      • Serverless部署
    • 无代码平台

    • 图书管理系统

    • 《全栈项目》
    • 任务管理日历
    • 后端部署
    夜猫子
    2023-07-11
    目录

    Serverless部署

    # Midway 应用迁移

    更多内容,可查阅官方文档 Midway Serverless (opens new window)

    我们在初始 Midway 项目时, 选用的是纯 Node.js 这种方式,并以 koa 作为了项目的 context。

    当初选这项方式的原因是,这项方式可以在部署时将 纯 Node.js 方式创建的项目平滑过渡到 Serverless 部署,同时这两种方式还都可以保留。

    最终在测试环境,将项目通过 docker compose 的方式进行部署,在生产环境使用 Serverless 部署。

    imgimg

    # 创建 f.yml 文件

    关于什么是 f.yml 文件 和关于此文件的更多配置,请见文档 (opens new window)

    在项目的根目录下创建,与 package.json 同级

    service:
      name: tutu-list-web-server
    
    provider:
      name: aliyun
      runtime: nodejs14
    
    package:
      exclude:
        - package-lock.json
        - bootstrap.js
    
    deployType:
      type: koa ## 部署的应用类型
      version: 3.0.0
    
    # 不自动生成域名,最终方式时需要手动配置域名
    custom:
      customDomain: false
    
    # 自动生成域名,但是有时效性,过期该域名就会失效
    # custom:
    #   customDomain:
    #     domainName: auto 
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24

    # 创建 app.js

    const WebFramework = require('@midwayjs/koa').Framework;
    const { Bootstrap } = require('@midwayjs/bootstrap');
    
    module.exports = async () => {
      // 加载框架并执行
      await Bootstrap.run();
      // 获取依赖注入容器
      const container = Bootstrap.getApplicationContext();
      // 获取 koa framework
      const framework = container.get(WebFramework);
      // 返回 app 对象
      return framework.getApplication();
    };
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    # 修改 package.json 文件

    添加 deploy 部署命令,并在发布时自动执行 npm run build

    "midway-integration": {
      "lifecycle": {
        "before:package:cleanup": "npm run build"
      }
    },
    "scripts": {
      "deploy": "midway-bin deploy"
    }
    
    1
    2
    3
    4
    5
    6
    7
    8

    # 执行部署命令

    cnpm run deploy
    
    1

    强烈大家在 midway 项目中使用 cnpm,毕竟都是一家子,使用 npm 在部署 Serverless 环境的过程中,会install 一个 layers (层),它会很慢很慢,我从来没见到过 install 完成的样子

    # 输入 AccessKeyID 和 AccessKeySecret

    在首次部署时,会让你键入 AccessKeyID 和 AccessKeySecret,以部署到阿里云为例,AccessKey 的位置在这;

    imgimg

    部署完成后,云厂商会自动创建一个域名,点击此域名就可以进行访问了

    img

    # 添加访问域名

    如果你有自己的域名,那么要在 f.yml 中设置 customDomain: false

    并且在域名管理中添加自定义域名

    img

    # 添加路由配置

    在域名管理中添加自定义域名,并配置路由,指定哪一个路径由哪一个函数进行处理

    img

    编辑 (opens new window)
    上次更新: 2024/6/18 13:14:59
    GitLab CICD
    前言

    ← GitLab CICD 前言→

    最近更新
    01
    IoC 解决了什么痛点问题?
    03-10
    02
    如何调试 Nest 项目
    03-10
    03
    Provider注入对象
    03-10
    更多文章>
    Copyright © 2019-2025 Study | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式