npm包`serverless-docker-artifacts`使用教程

阅读时长 4 分钟读完

前言

随着云计算和DevOps的持续推广,如何快速方便的构建、部署分布式架构成为前端开发的一大难题。针对这个问题,近年来涌现了一些Serverless框架,如AWS Lambda和Google Functions等。云计算让服务器实例高度抽象化,使得部署变得更加轻便便捷,同时可以大大减少架构维护所需的工作量。

这里介绍一款npm包,能够有效提高前端开发中构建、部署的效率,即serverless-docker-artifacts

前提

在使用serverless-docker-artifacts之前,需要先要安装以下环境:

  • Docker
  • Node.js

服务器构建流程

  1. 先将您的Webpack构建产物放到Docker镜像中。
  2. 接下来在目标服务器上运行您的Docker容器。
  3. 然后,将您的构建部署到云上。

使用方式

安装包

在项目目录中执行下面的命令进行安装:

配置serverless.yml

serverless.ymlprovider中添加以下内容:

说明:

  • name:Docker容器的命名。
  • dockerfile:指定渲染Dockerfile的文件路径,在这里指向项目根目录下的Dockerfile
  • context:指定上下文路径,即该Dockerfile解析时使用的PATH。
  • artifact:指定部署应用的artifact。

配置Dockerfile

按照以下方式编辑Dockerfile

说明:

  • lambci/lambda:nodejs10.x:选用10.x版本的Node.js Lambda运行时。可以指定其他的版本,比如lambci/lambda:nodejs12.xlambci/lambda:ruby2.5,具体请参阅AWS Lambda运行时。
  • COPY . .:将当前工作目录中的所有内容(即随后的项目资源)都复制到Docker容器的当前工作目录/var/task中。
  • RUN npm install --production:安装生产环境的所有依赖。
  • CMD ["<函数处理名和文件名>.handler"]:指定在Docker容器中运行程序的命令。在本例中,指定了一个Lambda函数处理程序handler,请替换成您的函数处理程序名称。

编译Dockerfile

在您的项目目录中执行以下命令来构建Dockerfile:

在运行Dockerfile时,也可以指定其他参数,如使用--rm参数来自动移除临时容器等。

运行Dockerfile

要运行您的Docker容器,请按照以下命令在命令行中输入以下命令:

构建部署到云上

在运行npm run build(Webpack构建产物)之后,使用此命令来构建artifact(.zip文件):

运行后,artifact将保存到“./dist.zip”目录中。

接下来,将artifact推送到云端并部署应用程序:

除此之外,也可以在serverless.yml中指明部署的区域:

这样一来,在运行serverless deploy时,会将构建部署到该区域中。

结论

通过使用serverless-docker-artifacts,可以轻松构建、部署前端项目,降低维护的难度,提高生产力。同时,本文介绍的内容基于AWS Lambda运行时,读者可以推广到其他如Google Cloud Platform和Microsoft Azure等的Serverless平台中。

本文所有的例子都可以在serverless-docker-artifacts的Github仓库中找到:https://github.com/claudiajs/serverless-docker-artifacts。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b5551ab1864dac66b05

纠错
反馈