在看这篇文章之前首先看一下
基于PiggyMetrics微服务搭建的分布式系统这篇文章
还有这篇在Docker容器中运行Spring Boot应用
基于spring cloud的微服务架构:
mvn package -DskipTests
PiggyMetrics总共有9个项目,打包执行完后,在每个项目的target下有打包的jar文件
以account-service为例
Dockerfile
FROM java:8-jre
MAINTAINER Alexander Lukyanchikov <sqshq@sqshq>
ADD ./target/account-service.jar /app/
CMD ["java", "-Xmx200m", "-jar", "/app/account-service.jar"]
EXPOSE 6000
java:8-jre是指docker上官方提供的java镜像,版本号是8.也就是jdk1.8;
MAINTAINER 指作者信息
ADD指将应用jar包复制到/app/中
CMD 表示容器执行后默认执行的命令
spring:application:name: account-servicecloud:config:uri: config:8888fail-fast: truepassword: ${CONFIG_SERVICE_PASSWORD}username: user
这个文件就是加入配置中心服务地址信息。
configsrcmainresources目录下有l文件和shared文件夹
spring:cloud:config:server:native:search-locations: classpath:/shared #指向shared文件夹profiles:active: nativeserver:port: 8888 #端口security:user:password: ${CONFIG_SERVICE_PASSWORD}
shared文件夹中包含所有的服务
如果添加了服务需要加一个文件在这里,如l
现在主要关注l
hystrix:command:default:execution:isolation:thread:timeoutInMilliseconds: 20000ribbon:ReadTimeout: 20000ConnectTimeout: 20000zuul:ignoredServices: '*'host:connect-timeout-millis: 20000socket-timeout-millis: 20000routes:auth-service:path: /uaa/**url: auth-service:5000stripPrefix: falsesensitiveHeaders:account-service:path: /accounts/**serviceId: account-servicestripPrefix: falsesensitiveHeaders:statistics-service:path: /statistics/**serviceId: statistics-servicestripPrefix: falsesensitiveHeaders:notification-service:path: /notifications/**serviceId: notification-servicestripPrefix: falsesensitiveHeaders:sharedbike-service:path: /bike/**serviceId: sharedbike-servicestripPrefix: falsesensitiveHeaders:server:port: 4000
routes配置了路由信息,首先通过path解析到对应service,如bike开头的URL解析到sharedbike-service,所以新增服务也必须在这里配置路由信息。
gatewaysrcmainresources目录下有static文件夹,这个就是前端页面的html文件
mongodb文件夹下面有
init.sh是初始化mongodb的帐号密码和数据库名等信息,并插入了demo数据,数据执行sql在dump文件的account-service-dump.js中
总结:
如果增加一个服务,
1. 首先在自己的服务项目里面添加Dockerfile文件和srcmainl文件,
2. 然后在config服务的shared文件夹中加入对应服务的yml文件,如l,
3. 最后在l中添加路由信息,注意端口,不能跟其他服务相同
docker-compose -l build
version: '2'
services:rabbitmq:image: rabbitmq:3-managementrestart: alwaysports:- 15672:15672- 5672:5672logging:options:max-size: "10m"max-file: "10"config:build: configimage: sqshq/piggymetrics-configenvironment:CONFIG_SERVICE_PASSWORD: adminrestart: alwaysports:- 8888:8888logging:options:max-size: "10m"max-file: "10"registry:build: registryimage: sqshq/piggymetrics-registryenvironment:CONFIG_SERVICE_PASSWORD: adminrestart: alwaysdepends_on: [config]ports:- 8761:8761logging:options:max-size: "10m"max-file: "10"gateway:environment:CONFIG_SERVICE_PASSWORD: adminbuild: gatewayimage: sqshq/piggymetrics-gatewayrestart: alwaysdepends_on: [config]ports:- 80:4000logging:options:max-size: "10m"max-file: "10"data-mongodb:environment:INIT_DUMP: account-service-dump.jsMONGODB_PASSWORD: adminbuild: mongodbimage: sqshq/piggymetrics-mongodbrestart: alwaysports:- 25000:27017logging:options:max-size: "10m"max-file: "10"
image是镜像文件
restart是指重启虚拟机或docker,容器也会重启
ports是指docker和外部环境的端口映射,左边是外部访问docker的端口,右边是docker内部通信的端口
docker-compose -l -l build
这里有auth-service,account-service,statistics-service,notification-service,monitoring,如新加的服务需要在这里配置,
version: '2'
services:auth-service:environment:CONFIG_SERVICE_PASSWORD: adminNOTIFICATION_SERVICE_PASSWORD: adminSTATISTICS_SERVICE_PASSWORD: adminACCOUNT_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminbuild: auth-serviceimage: sqshq/piggymetrics-auth-servicerestart: alwaysports:- 5000:5000logging:options:max-size: "10m"max-file: "10"account-service:environment:CONFIG_SERVICE_PASSWORD: adminACCOUNT_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminbuild: account-serviceimage: sqshq/piggymetrics-account-servicerestart: always# ports:# - 6000:6000expose: - 6000logging:options:max-size: "10m"max-file: "10"statistics-service:environment:CONFIG_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminSTATISTICS_SERVICE_PASSWORD: adminbuild: statistics-serviceimage: sqshq/piggymetrics-statistics-servicerestart: alwaysports:- 7000:7000logging:options:max-size: "10m"max-file: "10"notification-service:environment:CONFIG_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminNOTIFICATION_SERVICE_PASSWORD: adminbuild: notification-serviceimage: sqshq/piggymetrics-notification-servicerestart: alwaysports:- 8000:8000logging:options:max-size: "10m"max-file: "10"sharedbike-service:environment:CONFIG_SERVICE_PASSWORD: adminMONGODB_PASSWORD: adminACCOUNT_SERVICE_PASSWORD: adminbuild: sharedbike-serviceimage: sqshq/piggymetrics-sharedbike-servicerestart: alwaysports:- 3000:3000logging:options:max-size: "10m"max-file: "10"monitoring:environment:CONFIG_SERVICE_PASSWORD: adminbuild: monitoringimage: sqshq/piggymetrics-monitoringrestart: alwaysports:- 9000:8080- 8989:8989logging:options:max-size: "10m"max-file: "10"
docker-compose -l up -d
启动base服务
docker-compose -l up -d
启动自定义的服务
步骤:
1. git clone项目到本地,并基于该项目创建自己的mvn项目
2. config、registry、gateway、monitoring,这4个组件不需要修改代码
3. auth-service、account-service、notification-service、statistics-service 替换成自己的服务
4. 在config中修改统一的配置文件,比如新增服务的服务名、端口等
5. 通过mvn构建后生成镜像
6. 运行所有的镜像
本文发布于:2024-01-30 19:57:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170661586322456.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |