使用 docker-compose 部署 Euraka

0. 背景

我 docker-compose 将我 SrpingBoot 微服务部署在 docker 容器中,在部署 Euraka 时 总是失败,无法连接到 Euraka服务器,经过各种寻找终于解决,记录成本文。

1. 问题描述

将要连接的 Euraka 客户机在连接 Euraka 时提示“连接拒绝”,或者“无法找到服务“

2. 解决

确保以下几处配置:

  • 1) eureka 工程的 application.yml 中的 spring.application.name 指定。比如我这里叫“eureka”

  • 2)docker-compose.yaml 配置文件中 services 配置文件下存在一个叫“eureka”的服务,名字同上。

  • 3)重点,重点,重点。客户机服务配置。在 docker-compose.yaml 配置文件中 ,要连接 enreka 的客户机服务的配置项中的重要配置如下:
    (a). 指定 links: - eureka 。
    (b). 配置环境变量(environment):EUREKASERVER_URI: "http://eureka:8761/eureka/"

  • 4)客户端微服务工程目录下的 application.yml 配置 eureka.client.serviceUrl.defaultZone: ${EUREKASERVER_URI:http://localhost:8761/eureka/}

说明:
links 配置项指定了 docker 客户端微服务 通过 eureka 这个名字进行连接。然后就可以使用 http://eureka:8761/eureka/ 配置发现服务的地址了。

3. 附录:我的配置文件


eureka 工程的 application.yml

server:
  port: ${PORT:8761}

spring:
  application:
    name: eureka     # 将在 Eureka 注册的服务的逻辑名称
  profiles:
    active: dev

eureka:
  client:
    registerWithEureka: false   #服务注册,是否将自己注册到Eureka服务中
    fetchRegistry: false        #服务发现,是否从Eureka中获取注册信息
  server:
    waitTimeInMsWhenSyncEmpty: 5


docker-compose. 的配置文件 docker-compose.yaml

version: '3.1'

services:

  eureka:
    build: ./eureka-service
    ports:
      - 8761:8761
    environment:
      PORT: "8761"
      PROFILE: "dev"

  zuul:
    build: ./zuul
    ports:
      - 11111:11111
    links:
      - eureka
    environment:
      PORT: "11111"
      PROFILE: "dev"
      EUREKA_SERVER: "eureka"
      EUREKASERVER_PORT: "8761"
      EUREKASERVER_URI: "http://eureka:8761/eureka/"

  article:
    build: ./article-service
    links:
      - eureka
    environment:
      PORT: "11400"
      PROFILE: "dev"
      EUREKA_SERVER: "eureka"
      EUREKASERVER_PORT: "8761"
      EUREKASERVER_URI: "http://eureka:8761/eureka/"

  user:
    build: ./user-service
    links:
      - eureka
    environment:
      PORT: "11300"
      PROFILE: "dev"
      EUREKA_SERVER: "eureka"
      EUREKASERVER_PORT: "8761"
      EUREKASERVER_URI: "http://eureka:8761/eureka/"


客户端微服务 工程的 application.yml

server:
  port: ${PORT:11111}

spring:
  application:
    name: zuul     # 将在 Eureka 注册的服务的逻辑名称

eureka:
  instance:
    preferIpAddress: true
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: ${EUREKASERVER_URI:http://localhost:8761/eureka/}

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值