一个简单的小例子,演示Nodejs工程如何发布到IBM Cloud Code Engine。
1.准备好一个简单的Nodejs Demo
server.js
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var express = require("express"); var bodyParser = require('body-parser'); var path = require("path"); var request = require('request'); var app = express(); app.use(bodyParser.json()); app.get('/ceRequest', function (req, res) { res.end("ok"); }); var router = express.Router(); var serverPort = process.env.PORT || 8081; var server = app.listen(serverPort, function () { console.log("Server Start"); });
package.json
{ "name": "CeDemo", "version": "1.0.0", "description": "CeDemo", "main": "server.js", "scripts": { "start": "node server.js" }, "dependencies": { "express": "^4.16.4", "express-handlebars": "^3.1.0", "request": "^2.88.2" } }
Dockerfile
#设置基础镜像,如果本地没有该镜像,会从Docker.io服务器pull镜像 FROM node #创建app目录,保存我们的代码 RUN mkdir -p /var/CeDemo #设置工作目录 WORKDIR /var/CeDemo #复制所有文件到 工作目录。 COPY . /var/CeDemo RUN npm install #暴露container的端口 EXPOSE 8081 #运行命令 CMD ["npm", "start"]
2.上传工程到Github上去。

3.生成SSH Key(Code Engine连接GitHub用)
- Mac系统下查看和生成SSH Key
①:打开终端 查看本地是否存在SSH-Key ls -al ~/.ssh 如果终端输出的是如下内容:证明本地没有生成的SSH Key,请执行第②步。 No such file or directory 如果终端输出的是如下内容:证明本地已经存在SSH Key 文件,请执行第③步。 id_rsa id_rsa.pub 注:id_rsa.pub是公钥,在GitHub使用。 id_rsa是私钥,在Code Engine使用 ②:如果没有,生成新的SSH Key ssh-keygen -t rsa -C"you_email" ③:查看SSH Key cat /Users/xxx/.ssh/id_rsa.pub xxx是你的电脑用户名,例如:howieMacBook-Pro:~ howie$中的howie关键字。 复制生成好的SSH Key 添加到 GitLab 或者GitHub中的SSH Key中即可。
- 登录到github 点击Settings

- 点击SSH and GPG keys –> New SSH Key

- 在终端打开公钥 cat /Users/ouka/.ssh/id_rsa.pub –> 拷贝到githubSSH key上 –> Add SSH Key


3.创建IBM Cloud Container Registry服务
- Code Engine需要把代码包装成docker容器的,我们把docker镜像注册到IBM Cloud Container Registry上。https://cloud.ibm.com/registry/catalog

- 创建一个名称空间,例子里面创建了cedemonm

4.创建IBM Cloud Code Engine服务
- 登陆IBM Cloud仪表盘,创建Code Engine服务

- 这里我们选择从 Github 也就是源代码开始创建

- 选择应用程序–>输入名称–>创建项目–>选择位置–>输入项目名称–>选择资源组–>点击创建按钮

- 点击 指定构建详细信息–>代码存储库访问权–>创建代码存储库访问权。

- 在Mac终端上【cat /Users/ouka/.ssh/id_rsa】 命令查询私钥,并把私钥配置到存储库访问权上。


- 配置代码存储库URL ssh方式 –> 选择存储库访问权 –>选择分支名称 –>下一步

- 策略选择Dockerfile–>下一步

- 注册表服务器:默认 注册表访问权:自动 名称空间:步骤3创建的(cedemonm) 储存库:默认

- 侦听端口:8081 和Nodejs暴露的端口一致 最小实例数:1 最大实例数:2

- 点击完成后,就开始部署了,等待完成即可。

- 部署成功后,会显示就绪。也会看到自动分配的URL

- 试验一下,返回OK,发布成功。

5.可以用下面的方法查看应用程序的log
- 在Mac终端Login IBM Cloud
ibmcloud login -sso

- 选择资源组
ibmcloud target -g xxxx

- 切换区域
ibmcloud target -r jp-tok

- 选择项目
ibmcloud ce project select --name demo666

- 列出所有应用程序
ibmcloud ce application list

- 查看log
ibmcloud ce application logs --application cedemopj
