首发于http://open.daocloud.io/using-node-to-build-applications/
DaoCloud体验-使用node构建应用程序
node应用程序demo
- 首先 选择一个平台
clone
代码到你的git平台上 coding / github / gitcafe - 在控制台点击
服务集成
- 创建
mysql服务
和mongodb服务
, 名字可以随意 - 回到控制台,点击
代码构建
,创建新项目
, 代码源选择你刚才 clone 的 - 勾选
持续集成
后点击开始创建
- 当镜像构建完成后, 点击
部署最新版本
, 接着点击基础设置
, 绑定 mysql 和 mongodb - 容器启动后,访问下URL看看,是不是输出了
mysql链接成功~~~ 并从mongodb中取出了 xinshangshangxin
- 持续集成 需要
push
一次代码到你的git,然后回到代码构建
, 选择daocloud_node_demo
, 查看如图所示
注意事项:
构建镜像必须提供Dockerfile
持续集成必须提供daocloud.yml
构建镜像和持续集成这两项服务完全是独立的, 两者之间没有任何依赖
push
一次代码到你的git才会触发持续集成
如何在app代码中连接mysql/mongodb实例
容器启动时能访问mysql/mongodb的注意事项
容器启动之前需要先绑定
mysql服务
和mongodb服务
mongodb使用的是mongoose连接,格式为:
mongodb://user:password@addr:port/database
在node中,环境变量存储在process.env
中,所以:user
=>process.env.MONGODB_USERNAME
password
=>process.env.MONGODB_PASSWORD
addr
=>process.env.MONGODB_PORT_27017_TCP_ADDR
port
=>process.env.MONGODB_PORT_27017_TCP_PORT
database
=>process.env.MONGODB_INSTANCE_NAME
mysql使用的是
node-mysql
,所以和上面相似user
=>process.env.MYSQL_USERNAME
password
=>process.env.MYSQL_PASSWORD
database
=>process.env.MYSQL_INSTANCE_NAME
host
=>process.env.MYSQL_PORT_3306_TCP_ADDR
port
=>process.env.MYSQL_PORT_3306_TCP_PORT
持续集成中使用mysql,mongodb服务注意事项
持续集成不需要绑定任何服务;daocloud ci在运行测试的时候会自动创建, 其使用的服务来自
daocloud.yml
1
2
3services:
- mysql
- mongodb在持续集成中
MONGODB_USERNAME
MONGODB_PASSWORD
MYSQL_USERNAME
MYSQL_PASSWORD
MYSQL_INSTANCE_NAME
以及MONGODB_INSTANCE_NAME
是不存在的, 所以为了兼容 容器和持续集成,代码中的连接需要进行判断,修改如下:
Mongodb
1 | var mongoose = require('mongoose'); |
Mysql
1 | // node_modules |
总结
- 容器运行时需要绑定mysql,mongodb服务
- 持续集成不需要绑定,由
daocloud.yml
指定, daocloud ci在运行测试的时候会自动创建一个mysql实例 - 持续集成中的mysql,mongodb服务和用户申请的mysql,mongodb实例没有任何关系
参考文档
文章若有纰漏请大家补充指正,谢谢~~