网络埋伏纪事

Node Hero - 12. 如何部署 Node.js 应用程序

网络埋伏纪事 · 2016-11-30翻译 · 378阅读 原文链接

本教程将学习如何将 Node.js 应用程序部署到 PaaS 提供者(Heroku)或者用 Docker 部署。

将 Node.js 部署到 PaaS

平台即服务(Platform-as-a-Service,Paas)非常适合于想有零操作或者创建小应用程序的团队。

在教程的这一部分,将学习如何使用 Heroku 来轻松部署 Node.js 应用程序。

Heroku 预备知识

要部署到 Heroku,必须将代码 push 到一个远程 git 仓库中。要实现这点,要将公共密钥添加给 Heroku。在注册后,访问你的账户,并在这里保存(也可以用 CLI 来执行)

还需要下载和安装 Heroku toolbelt。要验证安装是否成功,请在终端中执行如下命令:

heroku --version  
heroku-toolbelt/3.40.11 (x86_64-darwin10.8.0) ruby/1.9.3

toolbelt 启动和运行后,登录进去用它:

heroku login  
Enter your Heroku credentials.  
Email: joe@example.com  
Password:

(更多关于工具包的信息,请访问 Heroku Devcenter)

部署到 Heroku

Create a new app on Heroku to deploy Node.js

点击Create New App,添加一个新应用,并选择区域。几秒钟后,你的应用程序就会准备好,并显示如下欢迎屏:

Heroku Welcome Screen

到应用程序的 settings 页,抓取 Git URL。在命令行终端中,添加 Heroku 远程 url:

git remote add heroku HEROKU_URL

准备将第一个应用程序部署到 Heroku - 真的只需要一条 git push 就可以:

git push heroku master

之后,Heroku 就开始创建你的应用程序,然后部署。在部署后,你的服务就可以通过 https://YOUR-APP-NAME.herokuapp.com 访问了。

Heroku 附件

Heroku 最有价值的部分之一,就是它的生态圈,有很多合作伙伴提供数据库、监控工具以及其它解决方案。

试一下我们的 Node.js 监控解决方案,安装 Trace。为此,在你应用程序页面上查找 Add-ons,并开始键入 trace,然后点击它安装。很简单,对吧?

Heroku addons

(要完成 Trace 集成,请遵循我们的 Heroku 指南。)


用 Docker 部署 Node.js

在过去几年中,Docker 的增长势头很猛,成为了首选的容器化软件。

在本教程的这一部分,将学习如何从 Node.js 应用程序创建镜像,并运行。

Docker 基础

要使用 Docker,请从 Docker 官网 下载和安装它。

把 Node.js 应用放进 Docker 中

首先,必须搞清楚两个定义:

  • Dockerfile: 可以把 Dockerfile 当作是一张收据 - 它包含了如何创建 Docker 镜像的指令。
  • Docker 镜像: Dockerfile 运行后的输出 - 这是可运行的单元。

为了在 Docker 内运行一个应用程序,必须先写 Dockerfile。

Node.js 的 Dockerfile

在项目的根文件夹中,创建一个空的文本文件 Dockerfile,然后将如下代码粘贴进去:

FROM risingstack/alpine:3.3-v4.2.6-1.1.3

COPY package.json package.json  
RUN npm install

# Add your source files
COPY . .  
CMD ["npm","start"]

这里要注意的事情为:

  • FROM: 描述用来创建新镜像的基础镜像 - 本例中它是来自公共 Docker Hub
  • COPY: 该命令将 package.json 文件复制到 Docker 镜像中,这样就可以在镜像中执行 npm install
  • RUN: 这个用来执行命令,在本例中是 npm install
  • COPY: 再次复制 - 注意,我们已经在两个单独的步骤中执行复制了。原因是,Docker 从命令结果中创建层,所以如果 package.json 没有改变,那么它就不会再次执行 npm install
  • CMD: 一个 Docker 镜像只有一个 CMD - 这个命令定义镜像中开始的进程是什么。

有了 Dockerfile 后,可以用如下命令从它来创建镜像:

docker build .

要使用私有 NPM 模块吗?请看看关于如何在 Docker 中安装私有 NPM 模块的教程!

成功创建镜像后,我们用如下命令列出它们:

docker images

要运行一个镜像,请执行:

docker run IMAGE_ID

恭喜!你已经在本地运行了一个 Docker 化的 Node.js 应用程序。是时候部署它了!

部署 Docker 镜像

Docker 最伟大的事情之一就是,一旦你创建了镜像,就可以在任何地方运行它 - 大多数环境只需 docker pull 你的镜像,然后运行它。

可以在如下 Docker 服务提供商处试着部署:

设置它们是很简单的 - 如果遇到如何问题,就在评论区提问好了!

下一步

下一章将学习如何监控 Node.js 应用程序 - 这样它就可以全天候在线。