docker 配置 docker-compose 发布 apollo,启动portal报错,不能从meta server找到admin server

 在 https://github.com/ctripcorp/apollo/issues 找到一些关于这个错误的文章,说是可以在apollo portal 管理页面测试其他admin、configservice 的健康状态,或者通过configserverip:port/services/admin 查看返回的apollo-admin 服务状态,但是当我们用configserverip:port/services/admin这个地址去测试的时候发现返回为“[]”,这个时候发现在eureka上面 config 和 admin 都已经注册上去的,这让我百思不得其解,如下图所示:

eureka 注册信息
标题

经过不断探索,在apollo config service 源码里面发现这么一段:

  @RequestMapping("/admin")
  public List<ServiceDTO> getAdminService() {
    return discoveryService.getServiceInstances(ServiceNameConsts.APOLLO_ADMINSERVICE);
  }

查看ServiceNameConsts.APOLLO_ADMINSERVICE=apollo-adminservice,然后看了一下自己docker-compose的 配置 

apollo-adminservice:
    image: apolloconfig/apollo-configservice:1.7.1
    container_name: apollo-adminservice
    network_mode: "host"
    privileged: true
    environment:
      SERVER_PORT: 6166
      # DataSource Info
      SPRING_DATASOURCE_URL: "jdbc:mysql://mysql.host.com:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=GMT%2B8"
      SPRING_DATASOURCE_USERNAME: "root"
      SPRING_DATASOURCE_PASSWORD: "123456"
      spring.application.name: "apollo-admin-service"
      management.endpoints.web.exposure.include: "*"
      eureka.instance.prefer-ip-address: "true"
      eureka.instance.appname: "apollo-admin-service"
      eureka.instance.instance-id: "$${spring.application.name}:$${spring.application.instance_id:$${server.port}}"
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"

发现 spring.application.name 和 apollo service controller 里面所需要的配置并不正确,于是我改了一下配置

apollo-adminservice:
    image: apolloconfig/apollo-configservice:1.7.1
    container_name: apollo-adminservice
    network_mode: "host"
    privileged: true
    environment:
      SERVER_PORT: 6166
      # DataSource Info
      SPRING_DATASOURCE_URL: "jdbc:mysql://mysql.host.com:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=GMT%2B8"
      SPRING_DATASOURCE_USERNAME: "root"
      SPRING_DATASOURCE_PASSWORD: "123456"
      spring.application.name: "apollo-adminservice"
      management.endpoints.web.exposure.include: "*"
      eureka.instance.prefer-ip-address: "true"
      eureka.instance.appname: "apollo-adminservice"
      eureka.instance.instance-id: "$${spring.application.name}:$${spring.application.instance_id:$${server.port}}"
    logging:
      driver: "json-file"
      options:
        max-size: "200k"
        max-file: "10"

最终没有报错了。

结论: 

eureka.instance.appname=ServiceNameConsts.APOLLO_ADMINSERVICE
spring.application.name=ServiceNameConsts.APOLLO_ADMINSERVICE
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。而Apollo是携程开源的一款分布式配置中心,可以用于管理和配置应用程序的各种配置信息。下面是使用Docker Compose部署Apollo的步骤: 1. 创建一个名为`docker-compose.yml`的文件,并在其中定义Apollo服务的配置。以下是一个示例配置: ```yaml version: '3' services: apollo-configservice: image: apolloconfig/apollo-configservice ports: - 8080:8080 environment: - SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 - SPRING_DATASOURCE_USERNAME=your_username - SPRING_DATASOURCE_PASSWORD=your_password - DEV_META=http://localhost:8080 apollo-adminservice: image: apolloconfig/apollo-adminservice ports: - 8090:8090 environment: - SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8 - SPRING_DATASOURCE_USERNAME=your_username - SPRING_DATASOURCE_PASSWORD=your_password - DEV_META=http://localhost:8080 apollo-portal: image: apolloconfig/apollo-portal ports: - 8070:8070 environment: - SPRING_DATASOURCE_URL=jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 - SPRING_DATASOURCE_USERNAME=your_username - SPRING_DATASOURCE_PASSWORD=your_password - DEV_META=http://localhost:8080 ``` 2. 根据实际情况修改上述配置中的数据库连接信息和端口映射。 3. 在终端中进入包含`docker-compose.yml`文件的目录,并运行以下命令启动Apollo服务: ```bash docker-compose up -d ``` 4. 等待一段时间,直到所有容器都成功启动。可以使用以下命令检查容器的状态: ```bash docker-compose ps ``` 5. 通过浏览器访问Apollo的管理界面,地址为`http://localhost:8070`。在管理界面中可以进行配置管理和发布等操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_26489127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值