一个简单的小例子,演示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
