使用Cloud Foundry和Node.js创建一个Hello World应用程序

总结

    • Cloud Foundry 上にシンプルな Node.js アプリケーションをデプロイして動作させる

 

    Cloud Foundry 環境は Pivotal Web Services を使用する

源代码

源代码列表

.
├── Procfile
├── index.js
├── manifest.yml
└── package.json

Procfile → 进程文件

在 Procfile 文件中,需要写入程序的启动命令。
在这次的例子中,我们指定了使用 node 命令来执行 index.js。
冒号的左侧指定了进程类型。进程类型 web 意味着处理 HTTP 通信。

web: node index.js

参考:生产服务器配置 | Cloud Foundry 文档

索引.js

接收HTTP请求并返回结果的程序。
环境变量PORT的默认值为8080。
为了在本地环境中正常运行,如果环境变量不存在,则将端口号指定为8080。

const http = require('http')
http.createServer(function (req, res) {
  let body =
    '<html><body>' + "\n" +
    '<h1>Hello, world.</h1>' + "\n" +
    `<div>process.env.PORT: ${process.env.PORT}</div>\n` +
    '</body></html>' + "\n"
  res.writeHead(200, {'Content-Type': 'text/html'})
  res.end(body)
}).listen(process.env.PORT || 8080)

参考:Node.js 应用程序的技巧 | Cloud Foundry 文档

清单.yml

部署应用程序的环境设置文件。
通过将 random-route 设置为 true,自动生成不会冲突的主机。

---
applications:
- name: my-nodejs-app
  memory: 512M
  instances: 1
  random-route: true
  buildpacks:
  - https://github.com/cloudfoundry/nodejs-buildpack

以下是参考资料。

    • Deploying with App Manifests | Cloud Foundry Docs

 

    • Tips for Node.js Applications | Cloud Foundry Docs

 

    App Manifest Attribute Reference | Cloud Foundry Docs

package.json的翻译:
配件.json

Node.js应用程序的配置文件。
指定Node.js的版本。

{
  "name": "my-nodejs-app",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "engines": {
    "node": "~>12"
  }
}

请查阅以下资料:

    • Node.js Buildpack | Cloud Foundry Docs

 

    • Releases · cloudfoundry/nodejs-buildpack · GitHub

 

    • Tips for Node.js Applications | Cloud Foundry Docs

 

    npm-package.json | npm Documentation

部署

这次我们将部署到 Pivotal Web Services 的 Cloud Foundry 环境。组织(Org)和空间(Space)已经在之前创建好了。

登录。

$ cf login -a https://api.run.pivotal.io
API エンドポイント: https://api.run.pivotal.io
(以下略)

设立组织和空间。

$ cf target -o myorg -s development
API エンドポイント   https://api.run.pivotal.io
API バージョン:      2.142.0
ユーザー:            you@example.com
組織:                myorg
スペース:            development

准备部署源代码。

$ tree
.
├── Procfile
├── index.js
├── manifest.yml
└── package.json

0 directories, 4 files

使用cf push命令部署应用程序。

$ cf push
you@example.com としてマニフェストから組織 myorg / スペース development にプッシュしています...
(中略)
アプリが開始するのを待機しています...

名前:                   my-nodejs-app
要求された状態:         started
経路:                   my-nodejs-app-xxxx-xxxxx.cfapps.io
最終アップロード日時:   Sat 30 Nov 08:26:22 JST 2019
スタック:               cflinuxfs3
ビルドパック:           nodejs

タイプ:           web
インスタンス:     1/1
メモリー使用量:   512M
開始コマンド:     node index.js
     状態   開始日時               cpu    メモリー            ディスク          詳細
#0   実行   2019-11-29T23:26:33Z   0.0%   512M の中の 14.2M   1G の中の 82.4M   

确认已部署的应用程序可以通过curl命令访问并正常运行。

$ curl https://my-nodejs-app-xxxx-xxxxx.cfapps.io/
<html><body>
<h1>Hello, world.</h1>
<div>process.env.PORT: 8080</div>
</body></html>

请参阅相关资料

    • Getting Started with Pivotal Platform | Pivotal

 

    • Node.js Buildpack | Cloud Foundry Docs

 

    • Tips for Node.js Applications | Cloud Foundry Docs

 

    • Deploying with App Manifests | Cloud Foundry Docs

 

    • App Manifest Attribute Reference | Cloud Foundry Docs

 

    • Releases · cloudfoundry/nodejs-buildpack · GitHub

 

    • Production Server Configuration | Cloud Foundry Docs

 

    • Pushing an App | Cloud Foundry Docs

 

    npm-package.json | npm Documentation
bannerAds