您的位置:首页 > 运维架构 > Docker

需要安装 MongoDB,RabbitMQ,或者 MySQL?使用 Docker 来简化开发和测试

2015-09-29 14:41 1061 查看
几乎每个有意思的应用都会使用至少一个类似于数据库或者消息中间件的基础设施服务。比如,如果你想构建并运行基于 Spring Boot 的用户注册服务你会发现它同时需要 MongoDB 和 RabbitMQ。
你当然可以选择把这些基础设施服务都安装在你自己的机器上。不幸的是,安装这样一个服务不是那么容易的一件事情。而且,不同的项目需要的基础设施的版本可能互不相同而且彼此不能兼容。此外,我个人也不喜欢把自己的机器装满各种乱七八糟的服务。幸运的是,现在有一个很好的办法来解决这一问题:Docker。你只需安装 Docker 并将它作为一个容器来运行你需要的那些服务。
Docker 只能够直接跑在 Linux 上边,因此如果你用的是 Mac OSX 或者 Windows 的话,你首先得安装 Boot2Docker (Mac OSX, Window)。Boot2Docker 会将 Docker 命令行安装在宿主机器,但相关 Docker 守护进程却是在虚拟机中运行的。因此 Boot2Docker 的用户体验非常类似于直接在 Linux 上运行 Docker。
使用以下命令行启动包含有 Docker 守护进程的虚拟机:
$ boot2docker up
然后你需要设置一些环境变量来让 Docker 命令行认知 Docker 守护进程的主机地址和端口号。
$ boot2docker shellinit
Writing /Users/c/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/c/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/c/.boot2docker/certs/boot2docker-vm/key.pem
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/c/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
你只需要简单运行这一命令就可以把这些变量给设置好了:
$ $(boot2docker shellinit)
设置好环境变量之后你就可以在你的 Mac 或者 Windows 机器上使用 Docker 了。例如,显示正在运行的 Docker 容器的 docker ps 命令:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6fcf0779a5e1 dockerfile/mongodb:latest "mongod" 8 days ago Up 8 days 28017/tcp, 0.0.0.0:27017->27017/tcp mongodb
那么怎么运行 MongoDB 和 RabbitMQ 呢?Docker 生态系统的一个伟大的特性之一就是 Docker Hub,社区共享 Docker 镜像的这么一个网站。特别是,你可以在这里找到类似于 RabbitMQ 和 MongoDB 等基层设施服务的镜像。比如,你可以通过以下指令运行 MongoDB:
docker run -d -p 27017:27017 --name mongodb dockerfile/mongodb
如果有需要的话,这一指令将会从 Docker Hub 下载 dockerfile/mongodb 镜像,然后开始运行监听于端口 27017 的 MongoDB。同理,你可以通过以下指令运行 RabbitMQ:
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq dockerfile/rabbitmq
这些容器当然也运行于虚拟机中,你需要通过恰当的 IP 地址对它们进行访问。幸运的是,boot2docker 对此配置起来很简单:
export DOCKER_HOST_IP=$(boot2docker ip)
export SPRING_DATA_MONGODB_URI=mongodb://${DOCKER_HOST_IP}/userregistration
export SPRING_RABBITMQ_HOST=${DOCKER_HOST_IP}

"boot2docker ip" 指令输出你连接到容器的 IP 地址。
安装好 MongoDB 和 RabbitMQ 之后,你就可以运行用户注册服务了:
docker run -d -p 8080:8080 -e SPRING_DATA_MONGODB_URI -e SPRING_RABBITMQ_HOST --name sb_rest_svc
sb_rest_svc

原文链接:http://plainoldobjects.com/2015/01/14/need-to-install-mongodb-rabbitmq-or-mysql-use-docker-to-simplify-dev-and-test/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: