需求:
把自己搭建的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調用了背景查詢所有秒殺上面的邏輯。