在上一篇文章里http://www.cnblogs.com/lyhero11/p/8686058.html, 讲解了如何在windows10下安装docker社区版。

那如何利用docker落地一个分布式微服务架构的系统呢? github上有一个不错的开源项目PiggyMetrics,通过这个可以学习用docker和spring cloud做分布式微服务架构。

原项目地址:https://github.com/sqshq/PiggyMetrics

国内有个网友把里边应用的mongodb数据库示例由4个合并成1个、更适合本机学习用:https://github.com/huangmeng4520/PiggyMetrics

搭建文档:https://www.jianshu.com/p/e26570d1b297?mType=Group

按照里边步骤搭建问题都不大,但整个项目的容器启动之后,其他都没问题就mongodb一直连不上。无论是应用java代码连接,还是通过第三方数据库工具Robo 3T都连不上,而进入到该mongo容器内,用mongo命令却是可以连上的。

最后https://stackoverflow.com/questions/43781672/mongo-doesnt-run-after-installing-on-docker-centos-image-failed-to-connect-to 给了我启发,

在Mongodb启动的时候带上--bind_ip_all参数。

于是乎,修改PiggyMetrics\mongodb\init.sh文件:

#!/bin/bash
if test -z "$MONGODB_PASSWORD"; then
echo "MONGODB_PASSWORD not defined"
exit
fi auth="-u user -p $MONGODB_PASSWORD" # MONGODB USER CREATION
(
echo "setup mongodb auth"
create_user="if (!db.getUser('user')) { db.createUser({ user: 'user', pwd: '$MONGODB_PASSWORD', roles: [ {role:'readWrite', db:'piggymetrics'} ]}) }"
until mongo piggymetrics --eval "$create_user" || mongo piggymetrics $auth --eval "$create_user"; do sleep ; done
killall mongod
sleep
killall - mongod
) & # INIT DUMP EXECUTION
(
if test -n "$INIT_DUMP"; then
echo "execute dump file"
until mongo piggymetrics $auth $INIT_DUMP; do sleep ; done
fi
) & echo "start mongodb without auth"
chown -R mongodb /data/db
gosu mongodb mongod "$@" --bind_ip_all echo "restarting with auth on"
sleep
exec gosu mongodb mongod --auth "$@" --bind_ip_all

重新build sqshq/piggymetrics-mongodb image,然后重新启动data-mongodb容器。一切正常。

最后记录一下学习这个项目过程中的笔记吧:

https://blog.csdn.net/shi1451042748/article/details/52996046

https://blog.csdn.net/nihaomanihao11/article/details/73822755

https://www.jianshu.com/p/e26570d1b297?mType=Group

https://github.com/sqshq/PiggyMetrics

开发模式:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml build
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up

阿里云镜像加速:
https://wk8aklru.mirror.aliyuncs.com
DaoCloud镜像加速:
http://7c698057.m.daocloud.io

查看所有容器
docker ps -a
查看所有镜像
docker images

docker rm $(docker ps -aq) 删除所有的容器

#
# 删除容器应用
#
docker ps -a --format "{{.ID}}" | foreach {
docker stop $_
docker rm $_
}

#
# 删除本地容器镜像
#
docker images --format "{{.ID}}" | foreach {
docker rmi stop $_
}

PiggyMetrics项目重要端口:
http://localhost:80 - Gateway
http://localhost:8761 - Eureka Dashboard
http://localhost:9000/hystrix - Hystrix Dashboard (paste Turbine stream link on the form)
http://localhost:8989 - Turbine stream (source for the Hystrix Dashboard)
http://localhost:15672 - RabbitMq management (default login/password: guest/guest)

 

mongodb启动脚本init.sh需用notepad++转成unix格式

init.sh中mongodb的ip绑定到了127.0.0.1,可用如下方法去除Ip绑定,在init.sh最后做如下修改:
gosu mongodb mongod "$@" --bind_ip_all
exec gosu mongodb mongod --auth "$@" --bind_ip_all
两个地方都加上 --bind_ip_all

05-11 07:27