需求:
把自己搭建的spring cloud模块,服务注册中心使用docker部署启动。实现服务注册和访问。
实现一个简单的分布式 rpc
准备工作:
安装好docker的阿里云服务器
eureka 微服务jar包
服务提供者(本地启动)
服务调用方(本地启动)
实现步骤:
dockerfile准备
通过配置eureka.instance.hostname 和server.port 提供给服务提供方和调用方的访问url.
spring:
profiles:
active: pro
---
eureka:
instance:
hostname: ***.**.*.* #服务实例名称 服务器ip
client:
healthcheck:
enabled: true #这个配置必须配置才能启动成功
register-with-eureka: false #表示是否向eureka注册中心注册自己
fetch-registry: false #false 表示自己是注册中心
service-url: #表示监控注册地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
port: **** ##服务注册端口
spring:
profiles: pro
---
eureka:
instance:
hostname: localhost #服务实例名称
client:
healthcheck:
enabled: true #这个配置必须配置才能启动成功
register-with-eureka: false #表示是否向eureka注册中心注册自己
fetch-registry: false #false 表示自己是注册中心
service-url: #表示监控注册地址
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
port: ****
spring:
profiles: dev
maven package eureka得到jar包.
在服务器端新建一个临时目录,并把jar上传,
并且新建一个dockerfile用于生成镜像
FROM java:8
ADD blog-eureka-0.0.1-SNAPSHOT.jar /app/eureka.jar
###RUN yum install net-tools
EXPOSE 1000 ##端口号
CMD java -jar /app/eureka.jar
目录:
pull java:8 镜像
docker pull java:8
生成微服务镜像
docker build -f dockerfile-eureka -t eureka:1.1 .
docker启动 微服务应用
此处-p 后面是宿主机和docker之间的端口映射
docker run -di --name eureka -p ***:*** eureka:1.1
此时eureka的管理页面可以访问:
dockers ps查看容器已经启动:
注册服务
只需要修改defaultZone的ip和端口
以前是localhost,因为以前eureka也在本地
eureka:
client:
service-url:
defaultZone: http://ip:port/eureka/ ##eureka服务ip和port ###
healthcheck:
enabled: true
instance:
instance-id: seckill-platform
服务端全部配置:
可以看到服务已经注册成功:
前台调用
只需要修改此处defaultZone:这就是feign自动寻找服务
eureka:
client:
register-with-eureka: false #不像eureka 注册自己
service-url:
defaultZone: http://ip:port/eureka/ ##
调用成功,此处通过eureka调用了后台查询所有秒杀上面的逻辑。