docker部署PiggyMetrics分布式微服务
在上一篇文章里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
docker部署PiggyMetrics分布式微服务的更多相关文章
- 基于docker 如何部署surging分布式微服务引擎
1.前言 转眼间surging 开源已经有1年了,经过1年的打磨,surging已从最初在window 部署的分布式微服务框架,到现在的可以在docker部署利用rancher 进行服务编排的分布式微 ...
- 推荐一款分布式微服务框架 Surging
surging surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zookeeper.Consul作为surging服务的注册中心,集成了哈希,随机,轮询,压力最小优先作为 ...
- Thrift搭建分布式微服务1
Thrift搭建分布式微服务 一.Thrift是什么? 关于Thrift的基本介绍,参看张善友的文章Thrift简介. 二.为什么使用微服务? 在公司的高速发展过程中,随着业务的增长,子系统越来越多. ...
- Dapeng框架-开源高性能分布式微服务框架
我们公司性质是新零售,公司也有专门的框架组.这群大牛自己开发了一整套分布式微服务框架.我们也在使用这套框架,有很多心得体会. 该框架既Dapeng也!开源github地址:https://github ...
- Surging 分布式微服务框架使用入门
原文:Surging 分布式微服务框架使用入门 前言 本文非 Surging 官方教程,只是自己学习的总结.如有哪里不对,还望指正. 我对 surging 的看法 我目前所在的公司采用架构就是类似与S ...
- [转载]Surging 分布式微服务框架使用入门
前言 本文非 Surging 官方教程,只是自己学习的总结.如有哪里不对,还望指正. 我对 surging 的看法 我目前所在的公司采用架构就是类似与Surging的RPC框架,在.NET 4.0框架 ...
- 我的分布式微服务框架:YC-Framework
YC-Framework官方文档:http://framework.youcongtech.com/ YC-Framework源代码:https://github.com/developers-you ...
- Thrift搭建分布式微服务(二)
第二篇 连接池 连接池配置,请前往Thrift搭建分布式微服务(一) 下面要介绍的其实不是单一的连接池,应该说是连接池集合.因为它要管理多个Tcp Socket连接节点,每个服务节点都有设置了自己 ...
- 整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建
整合SPRING CLOUD云服务架构 - 企业分布式微服务云架构构建 1. 介绍 Commonservice-system是一个大型分布式.微服务.面向企业的JavaEE体系快速研发平台,基于模 ...
随机推荐
- python数据结构详解
Python中常见的数据结构可以统称为容器(container).序列(如列表和元组).映射(如字典)以及集合(set)是三类主要的容器. 一.序列(列表.元组和字符串) 序列中的每个元素都有自己的编 ...
- Python之字符串基本操作
#!/usr/bin/env python#-*-coding utf8-*-#Author:caojininfo = { 'stu1001': 'caojin', 'stu1002': 'zhaom ...
- 695. Max Area of Island
static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...
- iOS后台唤醒实战:微信收款到账语音提醒技术总结
1.前言 微信为了解决小商户老板们在频繁交易中不方便核对.确认到账的功能痛点,产品MM提出了新版本需要支持收款到账语音提醒功能.本文借此总结了iOS平台上的APP后台唤醒和语音合成.播放等一系列技术开 ...
- 2018.11.05 NOIP模拟 列队(差分约束)
传送门 直接建边跑差分约束就可以了. 代码
- mac os 下 Android Studio设置真机调试
http://www.cnblogs.com/developer-wang/p/6719555.html 如果没有 .bash_profile 只需要创建 .bash_profile,然后增加andr ...
- fastjson 错误解决方案详情 com.alibaba.fastjson.JSONException: syntax error, expect {, actual EOF, pos 1410
原因: 前端传递的数组过于复杂,倒是出现这种问题,前端采用vue axios,发送请求,后端java接收代码,实现前后端分离 后端就收fastjson接收json,进行业务处理,后端Controlle ...
- head内部标签(常用部分)
1.meta标签: <meta charset="utf-8" /> 2 <meta name="keywords" content=&quo ...
- Different timers in .net
Multi-threads timers: System.Threading.Timer and System.Timers.Timer (.net framework): App will hand ...
- bootstrap增删改查
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...