[编者的话] 当文字偶遇代码,当程序插上了翅膀,让分享成为我们彼此沟通的语言。我们期待可以构建这样一个平台让开发者们看到你们的智慧,挖掘你们的才华,让彼此在开源的路上不再孤独。“DaoCloud分享写作计划”已全面启动,欢迎投稿。

node应用程序demo

首先,选择一个平台 clone 代码到你的git平台上,譬如

在控制台点击 服务集成

;

创建 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服务

在控制台点击 服务集成,接着创建 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

services:

- mysql

- mongodb

在持续集成中, MONGODB_USERNAME、 MONGODB_PASSWORD、 MYSQL_USERNAME 、MYSQL_PASSWORD、 MYSQL_INSTANCE_NAME 以及MONGODB_INSTANCE_NAME是不存在的,所以为了兼容容器和持续集成,代码中的连接需要进行判断,修改如下:

Mongodb

var mongoose = require('mongoose');

// 链接格式: mongodb://user:pass@localhost:port/database

var mongodbUri = 'mongodb://';

// 持续集成时, MONGODB_USERNAME 和 MONGODB_PASSWORD 不存在

// 需要进行判断

if (process.env.MONGODB_USERNAME) {

// 在容器中则存在,在持续集成中则不存在

mongodbUri += process.env.MONGODB_USERNAME;

if (process.env.MONGODB_PASSWORD) {

mongodbUri += ":" + process.env.MONGODB_PASSWORD

}

mongodbUri += "@";

}

mongodbUri += (process.env.MONGODB_PORT_27017_TCP_ADDR || 'localhost')

+ ":" + (process.env.MONGODB_PORT_27017_TCP_PORT || 27017)

+ '/' + (process.env.MONGODB_INSTANCE_NAME || 'test');// 持续集成中MONGODB_INSTANCE_NAME 也不存在, 使用 test 代替

Mysql

// node_modules

var mysql = require('mysql');

// 持续集成中MYSQL_USERNAME默认为root,并且没有MYSQL_PASSWORD

// MYSQL_INSTANCE_NAME默认为test

var connection = mysql.createConnection({

user: process.env.MYSQL_USERNAME || 'root',

password: process.env.MYSQL_PASSWORD || '',

database: process.env.MYSQL_INSTANCE_NAME || 'test',

host: process.env.MYSQL_PORT_3306_TCP_ADDR || 'localhost',

port: process.env.MYSQL_PORT_3306_TCP_PORT || '3306'

});

// 创建连接

connection.connect(function(err) {

if (err) {

console.error('error connecting: ' + err.stack);

return;

}

console.log('connected as id ' + connection.threadId);

});

总结

容器运行时需要绑定mysql、mongodb服务

持续集成不需要绑定,由 daocloud.yml指定,DaoCloud CI在运行测试的时候会自动创建实例

持续集成中的mysql、mongodb服务和用户申请的mysql,mongodb实例没有任何关系

本文来自“DaoCloud分享写作计划”,这项计划旨在为开发者提供一个平台,分享使用Docker的心得体会和技术经验。DaoCloud将为文章作者提供一定的物质奖励,具体方式请访问:

daocloud创建mysql_DaoCloud体验-使用node构建应用程序相关推荐

  1. 构建node.js基础镜像_在Android上构建Node.js应用程序

    构建node.js基础镜像 by Aurélien Giraud 通过AurélienGiraud 在Android上构建Node.js应用程序-第1部分:Termux,Vim和Node.js (Bu ...

  2. 如何在Docker上构建Node.js应用程序

    Docker has been the latest trending topic over the past couple of years and if you haven't been to s ...

  3. Node.js 体验 — 当 Node.js 邂逅 Windows Azure

    在本系列的第一篇文章中,我介绍了如何在Windows上运行Node.js.在第二篇文章中,我示范了如何在Node.js 中使用SQL Server.那也是我学习Node.js 的步骤,首先使它在win ...

  4. vue3.0 Composition API 上手初体验 使用 vue-router 构建多页面应用

    vue3.0 Composition API 上手初体验 使用 vue-router 构建多页面应用 前两讲,我们已经顺利的使用 vue3.0 将项目跑起来了.但是实在是过于简陋,目前我们几乎不可能开 ...

  5. drill apache_使用Apache Drill REST API通过Node构建ASCII仪表盘

    drill apache Apache Drill有一个隐藏的瑰宝:易于使用的REST接口. 该API可用于查询,分析和配置Drill引擎. 在此博客文章中,我将解释如何使用Brilled Contr ...

  6. 使用Apache Drill REST API通过Node构建ASCII仪表板

    Apache Drill有一个隐藏的瑰宝:易于使用的REST接口. 该API可用于查询,分析和配置Drill引擎. 在此博客文章中,我将说明如何使用Brilled Contrib使用Drill RES ...

  7. 我的Go+语言初体验——Go+语言构建神经网络实战手写数字识别

    "我的Go+语言初体验" | 征文活动进行中- 我的Go+语言初体验--Go+语言构建神经网络实战手写数字识别 0. 前言 1. 神经网络相关概念 2. 构建神经网络实战手写数字识 ...

  8. 使用v-cli创建项目,引入element-ui构建用户管理页面实现增删改查

    文章目录 前言 一.使用v-cli创建vue项目文件 二.引入element-ui 三.开始实现功能 1.初步页面,表格绘制 2.实现增加功能 3.实现修改和删除功能 4.实现查询操作 总结 前言 记 ...

  9. 虚拟现实技术利用计算机,虚拟现实 虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生...

    虚拟现实 虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中. 中文名 虚拟现实,灵境 ...

最新文章

  1. hbase1.1.1 连接集群_除了HAProxy,RabbitMQ集群还可以这样用
  2. Deepin系统安装
  3. swoole process进程 多分发
  4. VS2012+WDK8.0搭建WDF驱动开发环境
  5. Android相机的实现
  6. Java 面试题 —— 老田的蚂蚁金服面试经历
  7. C#相关基础知识点总结+基础代码
  8. python中八进制_在Python中以八进制格式输入数字
  9. 关于Java交换两个对象的问题
  10. 楼对面的男士夏天就光膀子,请问大家,男士真的都爱光膀子吗?
  11. HDU1848 Fibonacci again and again【SG函数】
  12. python中的scatter函数_Python Matplotlib scatter函数:绘制散点图
  13. 西电2019计算机导论期中考试,西安电子科技大学203上学期期末考试计算机导论试卷.doc...
  14. javascript满天小星星
  15. 程序员增加收入实用指南,基于android的app开发平台综述
  16. Linux 远程联机服务(二)- Rsh服务器
  17. VMVare 安装centos系统时,界面显示不全
  18. 重复代码 Duplicated Code
  19. oracle设置字符集为gbk,rac 环境下修改oracle数据库字符集为GBK
  20. 【快速上手教程1】疯壳·开源编队无人机-开机测试

热门文章

  1. 一、node.js的windows环境设置
  2. 对DataGridView中的DataGridViewComboBoxColumn有了一点点体会
  3. [转载] python 动态变量创建locals()
  4. [转载] 实训心得体会
  5. [转载] python中异常处理的四个句子_Python学习笔记总结(四)异常处理
  6. 【Java】 归并排序的非递归实现
  7. opencv3 学习三 - 图像输入输出显示等
  8. 详解k8s一个完整的监控方案(Heapster+Grafana+InfluxDB) - kubernetes
  9. java基础循环 for 、switch 、while 、do while、
  10. fshc模块fsch2mcu_if理解