[关闭]
@tata 2014-10-15T07:28:16.000000Z 字数 5685 阅读 4669

Docker方式使用和管理MongoDB(monogodb+rockmongo)

Docker MongoDB Rockmongo


MongoDB(官方主页:http://www.mongodb.org/)是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。

《MongoDB管理工具》里推荐了好几款比较实用的GUI管理工具,综合比较rockmongo是比较适合容器化的一个工具,本篇文章将带你使用Docker方式搭建一个通过rockmongo管理的MongoDB。

后续文章将会尝试使用docker技术搭建一个MongoDB的集群。

拉取 mongoDB镜像

  1. sudo docker pull mongo:2.7.7

拉取 openshift/centos-rockmongo镜像

  1. sudo docker pull openshift/centos-rockmongo

我一般在做东西之前,会搜集大量的同类型的东西做参考,在dockerHub上搜集rockmongo发现openshift/centos-rockmongo符合要求,排名也比较靠前。

启动mongoDB

  1. sudo mkdir -p /data/db
  2. sudo docker run -v /data/db:/data/db -p 27017:27017 --name mongodb_hyp -d mongo:2.7.7

启动rockmongo

  1. sudo docker run -p 8080:80 --name rockmongo_hyp1 --link mongodb_hyp:mongo -d openshift/centos-rockmongo

使用

打开浏览器,输入地址:http://localhost,输入admin及其密码(admin默认),点击登陆,提示如下信息:

  1. 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文件配置。

交互模式进入到rockmongo容器内部

查看config.php的配置信息

  1. sudo docker run -i -t openshift/centos-rockmongo /bin/bash
  2. ##进入到容器内
  3. bash-4.2#view /var/www/html/config.php

config.php的内容如下:

  1. <?php
  2. /**
  3. * RockMongo configuration
  4. *
  5. * Defining default options and server configuration
  6. * @package rockmongo
  7. */
  8. $MONGO = array();
  9. $MONGO["features"]["log_query"] = "off";//log queries
  10. $MONGO["features"]["theme"] = "default";//theme
  11. $MONGO["features"]["plugins"] = "on";//plugins
  12. $i = 0;
  13. /**
  14. * Configuration of MongoDB servers
  15. *
  16. * @see more details at http://rockmongo.com/wiki/configuration?lang=en_us
  17. */
  18. $MONGO["servers"][$i]["mongo_name"] = "Localhost";//mongo server name
  19. $MONGO["servers"][$i]["mongo_host"] = "127.0.0.1";//mongo host
  20. $MONGO["servers"][$i]["mongo_port"] = "27017";//mongo port
  21. $MONGO["servers"][$i]["mongo_timeout"] = 0;//mongo connection timeout
  22. //$MONGO["servers"][$i]["mongo_db"] = "MONGO_DATABASE";//default mongo db to connect, works only if mongo_auth=false
  23. //$MONGO["servers"][$i]["mongo_user"] = "MONGO_USERNAME";//mongo authentication user name, works only if mongo_auth=false
  24. //$MONGO["servers"][$i]["mongo_pass"] = "MONGO_PASSWORD";//mongo authentication password, works only if mongo_auth=false
  25. $MONGO["servers"][$i]["mongo_auth"] = false;//enable mongo authentication?
  26. $MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false
  27. $MONGO["servers"][$i]["control_users"]["admin"] = "admin";//one of control users ["USERNAME"]=PASSWORD, works only if mongo_auth=false
  28. $MONGO["servers"][$i]["ui_only_dbs"] = "";//databases to display
  29. $MONGO["servers"][$i]["ui_hide_dbs"] = "";//databases to hide
  30. $MONGO["servers"][$i]["ui_hide_collections"] = "";//collections to hide
  31. $MONGO["servers"][$i]["ui_hide_system_collections"] = false;//if hide the system collections
  32. $i ++;
  33. /**
  34. * mini configuration for another mongo server
  35. */
  36. /**
  37. $MONGO["servers"][$i]["mongo_name"] = "Localhost2";
  38. $MONGO["servers"][$i]["mongo_host"] = "127.0.0.1";
  39. $MONGO["servers"][$i]["mongo_port"] = "27017";
  40. $MONGO["servers"][$i]["control_users"]["admin"] = "password";
  41. $i ++;
  42. **/
  43. ?>

发现config.php的配置信息是写死的127.0.0.1,没有实现动态获取link进来的mongo容器的配置信息。
查看系统环境变量:

  1. #容器内
  2. bash-4.2#env
  3. MONGO_PORT=tcp://172.17.0.3:27017
  4. MONGO_ENV_MONGO_VERSION=2.7.7
  5. MONGO_PORT_27017_TCP=tcp://172.17.0.3:27017
  6. MONGO_PORT_27017_TCP_PROTO=tcp
  7. MONGO_PORT_27017_TCP_ADDR=172.17.0.3
  8. MONGO_NAME=/rockmongo_hyp/mongo
  9. MONGO_PORT_27017_TCP_PORT=27017

根据openshift/centos-rockmongo Dockerfile构建自己的Dockerfile

新建Dockerfile文件

  1. FROM openshift/centos-rockmongo
  2. MAINTAINER clh8801 <clh8801@gmail.com>
  3. COPY config.php /var/www/html/config.php

新建config.php文件

  1. <?php
  2. /**
  3. * RockMongo configuration
  4. *
  5. * Defining default options and server configuration
  6. * @package rockmongo
  7. */
  8. $MONGO = array();
  9. $MONGO["features"]["log_query"] = "off";//log queries
  10. $MONGO["features"]["theme"] = "default";//theme
  11. $MONGO["features"]["plugins"] = "on";//plugins
  12. $i = 0;
  13. /**
  14. * Configuration of MongoDB servers
  15. *
  16. * @see more details at http://rockmongo.com/wiki/configuration?lang=en_us
  17. */
  18. $MONGO["servers"][$i]["mongo_name"] = getenv('MONGO_NAME');//mongo server name
  19. $MONGO["servers"][$i]["mongo_host"] = getenv('MONGO_PORT_27017_TCP_ADDR');//mongo host
  20. $MONGO["servers"][$i]["mongo_port"] = getenv('MONGO_PORT_27017_TCP_PORT');//mongo port
  21. $MONGO["servers"][$i]["mongo_timeout"] = 0;//mongo connection timeout
  22. //$MONGO["servers"][$i]["mongo_db"] = "MONGO_DATABASE";//default mongo db to connect, works only if mongo_auth=false
  23. //$MONGO["servers"][$i]["mongo_user"] = "MONGO_USERNAME";//mongo authentication user name, works only if mongo_auth=false
  24. //$MONGO["servers"][$i]["mongo_pass"] = "MONGO_PASSWORD";//mongo authentication password, works only if mongo_auth=false
  25. $MONGO["servers"][$i]["mongo_auth"] = false;//enable mongo authentication?
  26. $MONGO["servers"][$i]["control_auth"] = true;//enable control users, works only if mongo_auth=false
  27. $MONGO["servers"][$i]["control_users"]["admin"] = "admin";//one of control users ["USERNAME"]=PASSWORD, works only if mongo_auth=false
  28. $MONGO["servers"][$i]["ui_only_dbs"] = "";//databases to display
  29. $MONGO["servers"][$i]["ui_hide_dbs"] = "";//databases to hide
  30. $MONGO["servers"][$i]["ui_hide_collections"] = "";//collections to hide
  31. $MONGO["servers"][$i]["ui_hide_system_collections"] = false;//if hide the system collections
  32. $i ++;
  33. /**
  34. * mini configuration for another mongo server
  35. */
  36. /**
  37. $MONGO["servers"][$i]["mongo_name"] = "Localhost2";
  38. $MONGO["servers"][$i]["mongo_host"] = "127.0.0.1";
  39. $MONGO["servers"][$i]["mongo_port"] = "27017";
  40. $MONGO["servers"][$i]["control_users"]["admin"] = "password";
  41. $i ++;
  42. **/
  43. ?>

构建镜像文件

  1. sudo docker build -t clh8801/centos-rockmongo:1.0 docker_centos-rockmongo/

启动mongoDB

  1. sudo mkdir -p /data/db
  2. sudo docker run -v /data/db:/data/db -p 27017:27017 --name mongodb_hyp -d mongo:2.7.7

启动rockmongo

  1. 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,看到了功能强大的管理界面。

Dock Hub上构建Dockerfile

为方便大家体验MongoDB 和Rockmongo,我在Dock Hub构建了一个repository,名称是clh8801/centos-rockmongo

大家可以直接pull下来使用。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注