专栏首页写代码和思考使用 docker-compose 部署 Euraka

使用 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/}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Android 无限轮播图,使用开源库SimpleCycleViewPager

    实现一个 播放广告的控件,可能有多个广告图片。每个一段时间更换该图片。简单来说,就是一个 “循环播放图片”的控件。

    zhangyunfeiVir
  • 在android中配置 slf4j + log4j 日志记录框架

    在项目开发中,需要记录 操作日志 。起初自己写了个简单的日志记录文本写入到文本的方法,后来随着项目的膨胀,需要考虑更多的操作,开始考虑性能问题。

    zhangyunfeiVir
  • NodeJS 的简单部署脚本,运行在远端机器的PM2下

    完成的NodeJS项目,要部署到远端的测试机,写个脚本如本文。 先克隆代码,通过 PM2 运行 。 可以将此脚本放到 Jenkins 下,设置好触发器,代码...

    zhangyunfeiVir
  • eureka配置账号密码才能访问

    如果配置好了eureka server,默认情况下我们就直接直接访问到eureka的界面了。如果不想让所有人都能访问到eureka的界面,可以加上权限认证,输入...

    天涯泪小武
  • Spring Eureka 初探及集群搭建

    Eureka 主要是用于进行服务的注册和发现,今天就来学习一下如何使用 Eureka

    Java技术大杂烩
  • Spring Cloud Eureka:服务注册与发现

    在微服务架构中往往会有一个注册中心,每个微服务都会向注册中心去注册自己的地址及端口信息,注册中心维护着服务名称与服务实例的对应关系。每个微服务都会定时从注册中心...

    macrozheng
  • SpringCloud教程(Finchley版本)-08:eureka集群搭建

    在eureka的服务治理设计中,所有的节点既是服务提供方,也是服务消费方,注册中心也不例外。eureka server的高可用集群,其实就是将自己作为服务向其他...

    IT云清
  • Spring Cloud系列勘误

    Spring Cloud系列已经写完了,这是一系列的学习笔记,由于写作匆忙,难免会有出错的文字或者代码,实在抱歉。 目前作者已经发现了几处有错误的地方,为了小伙...

    江南一点雨
  • Ribbon(客户端负载均衡)

    server: port: 8001 servlet: context-path: /eureka-provider # 访问的项目名称...

    爱撒谎的男孩
  • Istio 运维实战系列(3):让人头大的『无头服务』-下

    作者赵化冰,腾讯云高级工程师,Istio contributor,ServiceMesher管理委员,热衷于开源、网络和云计算。目前主要从事服务网格的开源和研...

    腾讯云原生

扫码关注云+社区

领取腾讯云代金券