七、docker部署springcloud微服务实战

一、项目架构介绍

       项目使用的架构是springboot+springcloud的微服务架构。微服务注册中心使用eureka、网关使用zuul(zuul已经停止更新了,后期可以考虑升级为gateway),使用shiro做可配置的权限控制(当然后期还可以升级为springsecurity)。登录使用的是jwt的校验方式。各微服务间使用fegin进行接口调用和通信,使用hystrix做熔断和降级处理。使用springcloud的组件config做统一的配置文件管理。数据存储使用结构化数据库mysql,非结构化数据库redis。各服务器集群间通过nfs做文件共享。前端使用react,并通过nginx进行请求转发,使用zuul网关进行路由。项目架构图如下:

二、eureka的配置修改

    我的eureka使用的是集群的方式。所以每个eureka都有其各自对应的配置文件。下面取其中一个的配置文件,作为例子进行讲解。

代码如下:

spring:
  profiles:
    active: peer1
  application:
    name: '@project.name@'

server:
  port: 7000
eureka:
  instance:
    hostname: eureka01
    leaseRenewalIntervalInSeconds: 5
  server:
    enable-self-preservation: true               # 关闭自我保护模式(缺省为打开)
    eviction-interval-timer-in-ms: 5000          # 续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
  client:
    registerWithEureka: true
    fetchRegistry: true                          # 表示是否从Eureka Server获取注册信息,默认为true。如果这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,就将其设为false。
    serviceUrl:
      defaultZone: http://eureka02:7001/eureka/,http://eureka03:7002/eureka/ # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。
#      defaultZone: http://eureka02:7000/eureka/,http://eureka03:7000/eureka/ # 设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址。默认是http://localhost:8761/eureka ;多个地址可使用 , 分隔。


logging:
  level:
    root: INFO
  path: /logs/lls/lls-eureka1
  file:
    max-history: 30

三、编写dockerfile

FROM java:8
MAINTAINER yuangl@lenovoedu.com
WORKDIR /app
COPY ./${JAR_FILE} /app/app.jar
CMD java $JAVA_OPTS -jar app.jar

关于dockerfile的编写,在我上一篇文章中已经详细介绍了。$JAVA_OPTS表示在使用java -jar启动时,加入的自定义参数。可以通过这个参数自定义传入,application.yaml中的参数对应的值。具体原理参见这篇文章https://blog.csdn.net/yangsnow_rain_wind/article/details/81171251

四、自定义的启动命令

    将写好的dockerfile文件和对应的jar包,放在同一文件夹下。执行docker命令,创建镜像并启动。

创建镜像命令:

docker build -t myTest:v1.0 .

启动命令如下:

docker run --name myTest -p 8002:8002 -e "JAVA_OPTS=-Deureka.client.serviceUrl.defaultZone=http://192.168.21.1:7000/eureka/ -Dspring.redis.prefix=test 
-Dspring.redis.open=ture 
-Dspring.redis.database=0 
-Dspring.redis.host=192.168.21.1
-Dspring.redis.port=6379 
-Dspring.redis.password=
-Dspring.redis.timeout=6000 
-Dspring.pool.max-active=-1 
-Dspring.pool.max-wait=-1 
-Dspring.pool.max-idle=100 
-Dspring.pool.min-idle=50 
-Dspring.datasource.druid.url=jdbc:mysql://192.168.21.1:3306/lls?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8 
-Dspring.datasource.druid.username=root 
-Dspring.datasource.druid.password=123456 
-Deureka.instance.prefer-ip-address=true 
-Deureka.instance.instance-id=192.168.21.1:8002 
-Deureka.instance.ip-address=192.168.21.1 " -v /logs/lls/lls-test-server:/logs/lls/lls-test-server -v /usr/local/file/:/usr/local/file/ -d java/myTest:v1.0

至此,该微服务就定制化启动完毕了。

通过docker ps查看该镜像的运行状态。其余微服务同理!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值