5分钟将Node应用部署到SAP云平台Cloud Foundry
阅读这篇blog大约需要5分钟
SAP云平台是SAP为客户提供的PaaS平台,其主要的目标是帮助客户和合作伙伴在最短的时间内开发出创新的云应用。这里是网址:
SAP云平台是完全基于PaaS开源标准平台Cloud Foundry之上的。CloudFoundry是业界的PaaS平台的标准平台,能够帮助开发人员快速部署扩展,无需操心基础架构的问题:
Test your code, or your users will.
今天主要通过把一个Node.js应用部署到SAP云平台,来感受一下它的强大和方便。
主要包含这些步骤:
- 准备工作
- 查看SAP CF标准支持的Buildpacks
- Node.js应用
- 云平台部署配置文件
- 部署应用
- 测试运行
准备工作
-
免费注册一个SAP云平台账号。
在SAP云平台官网免费注册,具体步骤这里就不重复了。 -
安装CloudFoundry命令行工具(CLI)
在CLI的主页下载安装。
查看SAP CF标准支持的Buildpacks
- 通过cli登录云平台
cf login
按提示输入云平台trial账户地址,用户名,密码等。
- 查看SAP云平台支持的buildpacks:
cf buildpacks
可以看到输出:
Getting buildpacks...
buildpack position enabled locked filename stack
staticfile_buildpack 1 true false staticfile_buildpack-cached-cflinuxfs3-v1.5.1.zip cflinuxfs3
java_buildpack 2 true false java_buildpack-cached-cflinuxfs3-v4.26.zip cflinuxfs3
ruby_buildpack 3 true false ruby_buildpack-cached-cflinuxfs3-v1.8.2.zip cflinuxfs3
dotnet_core_buildpack 4 true false dotnet-core_buildpack-cached-cflinuxfs3-v2.3.2.zip cflinuxfs3
nodejs_buildpack 5 true false nodejs_buildpack-cached-cflinuxfs3-v1.7.4.zip cflinuxfs3
go_buildpack 6 true false go_buildpack-cached-cflinuxfs3-v1.9.3.zip cflinuxfs3
python_buildpack 7 true false python_buildpack-cached-cflinuxfs3-v1.7.2.zip cflinuxfs3
php_buildpack 8 true false php_buildpack-cached-cflinuxfs3-v4.4.2.zip cflinuxfs3
binary_buildpack 9 true false binary_buildpack-cached-cflinuxfs3-v1.0.35.zip cflinuxfs3
nginx_buildpack 10 true false nginx_buildpack-cached-cflinuxfs3-v1.1.1.zip cflinuxfs3
r_buildpack 11 true false r_buildpack-cached-cflinuxfs3-v1.1.0.zip cflinuxfs3
sap_java_buildpack 12 true false sap_java_buildpack-v1.21.0.zip
sap_java_buildpack_1_21 13 true false sap_java_buildpack-v1.21.0.zip
sap_java_buildpack_1_20 14 true false sap_java_buildpack-v1.20.1.zip
sap_java_buildpack_1_19 15 true false sap_java_buildpack-v1.19.0.zip
Node.js应用
创建一个简单Node应用:
- 初始化:
node init -y
touch server.js
2.创建server.js:
const http = require('http');
const url = require('url');
const PORT = process.env.PORT || 3000;
http.createServer(
(req, res) => {
const urlP = url.parse(req.url, true);
res.writeHead(200, {'Content-Type': 'text/plain'});
if (urlP.query['name']) {
res.end(`Hello ${urlP.query['name']}`);
}else {
res.end('USAGE: http://localhost:3000?name=##');
}
}
).listen(PORT);
console.log('Server is running');
- 修改package.json:
"scripts": {
"start": "node server.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
- 本地测试运行:
npm start
云平台部署配置文件
在项目目录下新建一个manifest.yml文件:
---
applications:
- name: exp04
random-route: true
path: .
buildpack: nodejs_buildpack
memory: 64M
部署应用
通过简单的这个命令即可自动上传代码、编译、部署:
cf push
输出:
Pushing from manifest to org P20056789trial_trial / space dev as [email protected]...
Using manifest file /Users/myuser/Documents/projects/apps/node/exp04/manifest.yml
Deprecation warning: Use of 'buildpack' attribute in manifest is deprecated in favor of 'buildpacks'. Please see https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#deprecated for alternatives and other app manifest deprecations. This feature will be removed in the future.
Getting app info...
Updating app with these attributes...
name: exp04
path: /Users/myuser/Documents/projects/apps/node/exp04
buildpacks:
nodejs_buildpack
disk quota: 1G
health check type: port
instances: 1
memory: 64M
stack: cflinuxfs3
routes:
+ exp04-shy-leopard.cfapps.eu10.hana.ondemand.com
Updating app exp04...
Mapping routes...
Comparing local files to remote cache...
Packaging files to upload...
Uploading files...
746 B / 746 B [==================================================================================================] 100.00% 1s
Waiting for API to complete processing files...
Staging app and tracing logs...
Downloading nodejs_buildpack...
Downloaded nodejs_buildpack
Cell 9a366102-e83e-4812-a660-bb95979125bc creating container for instance 4a733482-3341-436f-a089-2660d88ee08b
Cell 9a366102-e83e-4812-a660-bb95979125bc successfully created container for instance 4a733482-3341-436f-a089-2660d88ee08b
Downloading app package...
Downloaded app package (746B)
-----> Nodejs Buildpack version 1.7.4
-----> Installing binaries
...
Waiting for app to start...
name: exp04
requested state: started
isolation segment: trial
routes: exp04-shy-leopard.cfapps.eu10.hana.ondemand.com
last uploaded: Sun 09 Feb 10:32:43 CST 2020
stack: cflinuxfs3
buildpacks: nodejs
type: web
instances: 1/1
memory usage: 64M
start command: npm start
state since cpu memory disk details
#0 running 2020-02-09T02:33:16Z 0.0% 2M of 64M 77.7M of 1G
测试运行
打开浏览器,通过自动分配的地址测试:
exp04-shy-leopard.cfapps.eu10.hana.ondemand.com?name=test
小结
SAP云平台是基于标准CF的开放云平台,提供了对业界各种标准语言和环境的支持。可以快速的开发、部署和创新。
项目代码
n/a