@tata
2014-10-15T07:28:16.000000Z
字数 5685
阅读 4669
Docker
MongoDB
Rockmongo
MongoDB(官方主页:http://www.mongodb.org/)是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
《MongoDB管理工具》里推荐了好几款比较实用的GUI管理工具,综合比较rockmongo是比较适合容器化的一个工具,本篇文章将带你使用Docker方式搭建一个通过rockmongo管理的MongoDB。
后续文章将会尝试使用docker技术搭建一个MongoDB的集群。
sudo docker pull mongo:2.7.7
sudo docker pull openshift/centos-rockmongo
我一般在做东西之前,会搜集大量的同类型的东西做参考,在dockerHub上搜集rockmongo发现openshift/centos-rockmongo符合要求,排名也比较靠前。
sudo mkdir -p /data/db
sudo docker run -v /data/db:/data/db -p 27017:27017 --name mongodb_hyp -d mongo:2.7.7
sudo docker run -p 8080:80 --name rockmongo_hyp1 --link mongodb_hyp:mongo -d openshift/centos-rockmongo
打开浏览器,输入地址:http://localhost,输入admin及其密码(admin默认),点击登陆,提示如下信息:
Unable to connect MongoDB, please check your configurations. MongoDB said:Failed to connect to: 127.0.0.1:27017: Connection refused.
rockmongo容器没有识别link进来的mongo服务器,通过学习rockmongo官方提供的搭建方法,了解到rockmongo主要依靠config.php文件配置。
查看config.php的配置信息
sudo docker run -i -t openshift/centos-rockmongo /bin/bash
##进入到容器内
bash-4.2#view /var/www/html/config.php
config.php的内容如下:
<?php
/**
* RockMongo configuration
*
* Defining default options and server configuration
* @package rockmongo
*/
$MONGO = array();
$MONGO["features"]["log_query"] = "off";//log queries
$MONGO["features"]["theme"] = "default";//theme
$MONGO["features"]["plugins"] = "on";//plugins
$i = 0;
/**
* Configuration of MongoDB servers
*
* @see more details at http://rockmongo.com/wiki/configuration?lang=en_us
*/
$MONGO["servers"][$i]["mongo_name"] = "Localhost";//mongo server name
$MONGO["servers"][$i]["mongo_host"] = "127.0.0.1";//mongo host
$MONGO["servers"][$i]["mongo_port"] = "27017";//mongo port
$MONGO["servers"][$i]["mongo_timeout"] = 0;//mongo connection timeout
//$MONGO["servers"][$i]["mongo_db"] = "MONGO_DATABASE";//default mongo db to connect, works only if mongo_auth=false
//$MONGO["servers"][$i]["mongo_user"] = "MONGO_USERNAME";//mongo authentication user name, works only if mongo_auth=false
//$MONGO["servers"][$i]["mongo_pass"] = "MONGO_PASSWORD";//mongo authentication password, works only if mongo_auth=false
$MONGO["servers"][$i]["mongo_auth"] = false;//enable mongo authentication?
$MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false
$MONGO["servers"][$i]["control_users"]["admin"] = "admin";//one of control users ["USERNAME"]=PASSWORD, works only if mongo_auth=false
$MONGO["servers"][$i]["ui_only_dbs"] = "";//databases to display
$MONGO["servers"][$i]["ui_hide_dbs"] = "";//databases to hide
$MONGO["servers"][$i]["ui_hide_collections"] = "";//collections to hide
$MONGO["servers"][$i]["ui_hide_system_collections"] = false;//if hide the system collections
$i ++;
/**
* mini configuration for another mongo server
*/
/**
$MONGO["servers"][$i]["mongo_name"] = "Localhost2";
$MONGO["servers"][$i]["mongo_host"] = "127.0.0.1";
$MONGO["servers"][$i]["mongo_port"] = "27017";
$MONGO["servers"][$i]["control_users"]["admin"] = "password";
$i ++;
**/
?>
发现config.php的配置信息是写死的127.0.0.1,没有实现动态获取link进来的mongo容器的配置信息。
查看系统环境变量:
#容器内
bash-4.2#env
MONGO_PORT=tcp://172.17.0.3:27017
MONGO_ENV_MONGO_VERSION=2.7.7
MONGO_PORT_27017_TCP=tcp://172.17.0.3:27017
MONGO_PORT_27017_TCP_PROTO=tcp
MONGO_PORT_27017_TCP_ADDR=172.17.0.3
MONGO_NAME=/rockmongo_hyp/mongo
MONGO_PORT_27017_TCP_PORT=27017
新建Dockerfile文件
FROM openshift/centos-rockmongo
MAINTAINER clh8801 <clh8801@gmail.com>
COPY config.php /var/www/html/config.php
新建config.php文件
<?php
/**
* RockMongo configuration
*
* Defining default options and server configuration
* @package rockmongo
*/
$MONGO = array();
$MONGO["features"]["log_query"] = "off";//log queries
$MONGO["features"]["theme"] = "default";//theme
$MONGO["features"]["plugins"] = "on";//plugins
$i = 0;
/**
* Configuration of MongoDB servers
*
* @see more details at http://rockmongo.com/wiki/configuration?lang=en_us
*/
$MONGO["servers"][$i]["mongo_name"] = getenv('MONGO_NAME');//mongo server name
$MONGO["servers"][$i]["mongo_host"] = getenv('MONGO_PORT_27017_TCP_ADDR');//mongo host
$MONGO["servers"][$i]["mongo_port"] = getenv('MONGO_PORT_27017_TCP_PORT');//mongo port
$MONGO["servers"][$i]["mongo_timeout"] = 0;//mongo connection timeout
//$MONGO["servers"][$i]["mongo_db"] = "MONGO_DATABASE";//default mongo db to connect, works only if mongo_auth=false
//$MONGO["servers"][$i]["mongo_user"] = "MONGO_USERNAME";//mongo authentication user name, works only if mongo_auth=false
//$MONGO["servers"][$i]["mongo_pass"] = "MONGO_PASSWORD";//mongo authentication password, works only if mongo_auth=false
$MONGO["servers"][$i]["mongo_auth"] = false;//enable mongo authentication?
$MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false
$MONGO["servers"][$i]["control_users"]["admin"] = "admin";//one of control users ["USERNAME"]=PASSWORD, works only if mongo_auth=false
$MONGO["servers"][$i]["ui_only_dbs"] = "";//databases to display
$MONGO["servers"][$i]["ui_hide_dbs"] = "";//databases to hide
$MONGO["servers"][$i]["ui_hide_collections"] = "";//collections to hide
$MONGO["servers"][$i]["ui_hide_system_collections"] = false;//if hide the system collections
$i ++;
/**
* mini configuration for another mongo server
*/
/**
$MONGO["servers"][$i]["mongo_name"] = "Localhost2";
$MONGO["servers"][$i]["mongo_host"] = "127.0.0.1";
$MONGO["servers"][$i]["mongo_port"] = "27017";
$MONGO["servers"][$i]["control_users"]["admin"] = "password";
$i ++;
**/
?>
sudo docker build -t clh8801/centos-rockmongo:1.0 docker_centos-rockmongo/
sudo mkdir -p /data/db
sudo docker run -v /data/db:/data/db -p 27017:27017 --name mongodb_hyp -d mongo:2.7.7
sudo docker run -p 80:80 --name rockmongo_hyp --link mongodb_hyp:mongo -d clh8801/centos-rockmongo:1.0
注意:启动rockmongo容器的时候,link进来的别名必须为mongo,见config.php文件。
打开浏览器,输入地址:http://localhost,输入admin及其密码(admin默认),点击登陆,Ok,看到了功能强大的管理界面。
为方便大家体验MongoDB 和Rockmongo,我在Dock Hub构建了一个repository,名称是clh8801/centos-rockmongo
大家可以直接pull下来使用。