本文介绍如何将Egg.js应用部署到函数计算。与传统的部署方法相比,您可以跳过购买机器等步骤,将传统的Egg.js应用一键部署至远端直接用于生产,并且拥有弹性伸缩、按量付费和免运维等特性。

背景信息

Egg.js为企业级框架和应用而生,为开发人员提供了Web开发的核心功能和一套具有高扩展性的插件机制。开发人员按照统一的约定开发应用,从而降低开发和维护成本。更多Egg的内容,请参见Egg.js

步骤一:准备环境

您无需安装Docker,仅安装Funcraft即可,最简单的方式即直接下载可执行的二进制文件。

  1. 安装Funcraft到本机。详情请参见安装Funcraft
  2. 执行fun --version检查安装是否成功。

步骤二:迁移应用

示例一:以部署一个HelloWorld应用为例介绍具体的操作步骤。

  1. 执行以下命令创建一个Egg.js项目,详情请参见快速初始化。若已有Egg.js项目则跳过该步骤。
    mkdir egg-example 
    cd egg-example
    npm init egg --type=simple
    npm i
  2. 执行以下命令运行本地项目。
    npm run dev
  3. 执行fun deploy -y命令将项目部署至函数计算。

    Funcraft会自动进入部署流程。

    fun deploy -y
    返回结果如下。
    using template: template.yml
    using region: cn-qingdao
    using accountId: ***********3743
    using accessKeyId: ***********Ptgk
    using timeout: 60
    
    Collecting your services information, in order to caculate devlopment changes...
    
    Resources Changes(Beta version! Only FC resources changes will be displayed):
    ... ... ...
           trigger httpTrigger deploy success
       function egg-example deploy success
    service egg-example deploy success
    
    Detect 'DomainName:Auto' of custom domain 'Domain'
    Fun will reuse the temporary domain 17090425-19861144305****.test.functioncompute.com, expired at 2020-04-27 10:27:05, limited by 1000 per day.
    
    Waiting for custom domain Domain to be deployed...
    custom domain Domain deploy success

    部署成功后,您可以在日志中看到函数计算为您生成的临时域名,通过这个临时域名您可直接访问刚部署的应用。

    说明 临时域名仅用作演示以及开发,具有时效性。如需用作生产,请绑定已经在阿里云备案的域名,详情请参见绑定自定义域名

示例二:以部署一个开源的Egg.js Web应用为例介绍具体的操作步骤。

应用示例预览效果请参见预览效果

  1. 执行以下命令把示例克隆到本地。
    git clone https://github.com/OrangeXC/mtime
  2. 执行以下命令进入mtime目录,并安装依赖。
    cd mtime
    npm install
  3. 在本地打开config/config.default.js文件,将MySQL的usernamepassword配置为正确的值。
    在本地启动应用时,需要使用config/config.default.js文件中的数据库配置。
    说明 在生产环境中启动应用时,Egg.js默认优先使用config/config.prod.js中的数据库配置。因此您需要将生产环境中的数据库信息配置到该文件中。配置完成后,您可以在本地使用npm run startnpm run stop命令以生产的方式启停应用来验证配置是否正确。
  4. 执行以下命令运行本地项目。
    npm run dev
  5. 执行以下命令修改config/config.prod.js文件,获取Egg.js缓存与日志目录的读取权限。
    config.rundir = '/tmp/run',
    config.logger = {
        dir: '/tmp/log',
    }
  6. 执行fun deploy -y命令将项目部署至函数计算。
    fun deploy -y
    返回结果如下。
    using template: template.yml
    using region: cn-qingdao
    using accountId: ***********3743
    using accessKeyId: ***********Ptgk
    using timeout: 60
    
    Collecting your services information, in order to caculate devlopment changes...
    
    Resources Changes(Beta version! Only FC resources changes will be displayed):
    ... ... ...
            trigger httpTrigger deploy success
        function egg-example deploy success
    service egg-example deploy success
    
    Detect 'DomainName:Auto' of custom domain 'Domain'
    Fun will reuse the temporary domain 17090425-19861144305****.test.functioncompute.com, expired at 2020-04-27 10:27:05, limited by 1000 per day.
    
    Waiting for custom domain Domain to be deployed...
    custom domain Domain deploy success

    部署成功后,您可以在日志中看到函数计算为您生成的临时域名,通过这个临时域名您可直接访问刚部署的应用。

    说明 临时域名仅用作演示以及开发,具有时效性。如需用作生产,请绑定已经在阿里云备案的域名,详情请参见绑定自定义域名