上篇文章我们学习了Apollo的本地安装,如果还不会本地安装的朋友可以查看之前的文章进行了解和学习链接地址(https://www.cnblogs.com/eternality/p/17583023.html),本篇我们学习怎么使用Docker安装Apollo及如何使用Java连接Apollo。阅读本篇文章需要了解docker安装容器相关的使用命令,还不懂docker的朋友请学习完docker后在来查看本篇文章。

1、使用docker搜索镜像

执行docker命令进行镜像搜索

docker search apolloconfig/apollo

执行成功后,可以查看到apollo的三个服务容器镜像。

2、拉取apollo镜像

执行docker pull命令进行镜像拉取,版本自行选择,默认拉取最新的镜像资源。

docker pull apolloconfig/apollo-configservice:latest

docker pull apolloconfig/apollo-adminservice:latest

docker pull apolloconfig/apollo-portal:latest

3、启动Apollo

拉取完docker镜像后,就可以直接通过镜像创建apollo相关容器了,不需要额外的配置apollo的信息。可以在创建容器的时候配置相关参数。

3.1、创建容器apollo-configservice并启动

docker run -d --name apollo-configservice -p 7800:8080 --privileged=true
-v 宿主机日志路径:/opt/logs
-e SPRING_DATASOURCE_URL="jdbc:mysql://数据库地址:3306/ApolloConfigDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=数据库账号
-e SPRING_DATASOURCE_PASSWORD=数据库密码
--link mysql-server
apolloconfig/apollo-configservice

--link mysql-server  #由于mysql也是使用docker启动的,所以可以使用该参数进行容器互联,数据库地址改为:mysql-server。即完整命令如下:

docker run -d --name apollo-configservice -p 7800:8080 --privileged=true
-v /apollo/apollo-docker/config/logs:/opt/logs
-e SPRING_DATASOURCE_URL="jdbc:mysql://mysql-server:3306/ApolloConfigDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=root
-e SPRING_DATASOURCE_PASSWORD=1234qwer
--link mysql-server
apolloconfig/apollo-configservice

执行命令之前需要我们改一下数据库的Eureka服务连接地址Url,需要连接上configservice的配置中心,不然启动会报错。在ApolloConfigDB数据库ServerConfig表的eureka.service.url的value的值进行修改。

3.2、创建容器apollo-adminservice并启动

docker run -d --name apollo-adminservice  --net=host  --privileged=true
-v 宿主机日志路径:/opt/logs
-e SPRING_DATASOURCE_URL="jdbc:mysql://数据库地址:3306/ApolloConfigDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=数据库账号
-e SPRING_DATASOURCE_PASSWORD=数据库密码
apolloconfig/apollo-adminservice

--net=host不需要再做端口映射,直接占用宿主机的IP和端口号,adminservice使用默认端口8090。当然也可以和创建configservice一样,在创建的时候使用端口映射 -p 参数,这样在执行命令时把--net=host 去掉就可以了加上-p。之所以这样写的原因是因为我想试一下其他的创建方式。所以在我们创建容器的时候完全可以按照自己的方式进行创建适合自己使用的容器,我这里只做引导。有句话做叫:能用就行 ~哈哈 。粘贴下完整启动命令:

docker run -d --name apollo-adminservice  --net=host --privileged=true
-v /apollo/apollo-docker/admin/logs:/opt/logs
-e SPRING_DATASOURCE_URL="jdbc:mysql://172.25.96.1:3306/ApolloConfigDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=root
-e SPRING_DATASOURCE_PASSWORD=1234qwer
apolloconfig/apollo-adminservice

顺便说一下:在不使用容器互联的情况下,数据库地址需要配置为安装MySQL数据库的地址,要保证容器可以连通MySQL数据库。下面我们就改启动最后一个服务了。

3.3 创建容器apollo-portal并启动

docker run -d --name apollo-portal  -p 8000:8070 --privileged=true
-v 宿主机日志路径:/opt/logs
-e SPRING_DATASOURCE_URL="jdbc:mysql://数据库地址:3306/ApolloPortalDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=数据库账号
-e SPRING_DATASOURCE_PASSWORD=数据库密码
-e APOLLO_PORTAL_ENVS=dev
-e DEV_META=http://服务器ip地址:8070 \
apolloconfig/apollo-portal

APOLLO_PORTAL_ENVS:对应ApolloPortalDB中的apollo.portal.envs配置项,如果没有在数据库中配置,可以通过此环境参数配置
DEV_META:配置对应环境configservice的地址,以${ENV}_META命名,如果ApolloPortalDB中ServerConfig配置了apollo.portal.meta.servers,则以apollo.portal.meta.servers中的配置为准

完整命令

docker run -d --name apollo-portal  -p 8000:8070 --privileged=true
-v /apollo/apollo-docker/portal/logs:/opt/logs
-e SPRING_DATASOURCE_URL="jdbc:mysql://172.25.96.1:3306/ApolloPortalDB?characterEncoding=utf8"
-e SPRING_DATASOURCE_USERNAME=root
-e SPRING_DATASOURCE_PASSWORD=1234qwer
-e APOLLO_PORTAL_ENVS=dev
-e DEV_META=http://172.25.96.1:7800
apolloconfig/apollo-portal

配置Meta Servers地址,也就是configservice的连接地址,在ApolloPortalDB数据库的ServerConfig表的apollo.portal.meta.servers的value中进行配置。和上面的DEV_META一致。

4、服务配置中心

执行完上面命令后,我们的配置中心就启动了。可以查看容器启动命令

docker ps

输出上面内容说明我们的容器启动成功了,访问服务端口IP:8000可以进行访问,默认的用户名是apollo,密码是admin。

登录成功

5、创建应用

登录成功后,我们创建一个应用,在应用里面新增一个配置信息,并发布相关配置。下面会通过Spring boot连接配置中心,查看是否可以获取到相关配置信息。

6、使用Spring boot连接配置中心

首先需要添加Maven依赖

        <properties>
<apollo.version>1.1.0</apollo.version>
</properties> <!--携程开源框架 配置中心-->
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>${apollo.version}</version>
</dependency>

在Resources资源下面创建application.properties配置文件进行连接配置中心

#阿波罗配置
app.id=spring-cloud-config-dev #应用ID
apollo.meta=http://172.25.96.1:7800 #Meta Servers连接地址 ,即configservice连接地址
apollo.bootstrap.enabled=true #springboot在启动阶段就会加载
apollo.bootstrap.namespaces=spring-cloud-management # namespace名称
apollo.bootstrap.eagerLoad.enabled=true #将Apollo配置加载提到初始化日志系统之前。

创建一个controller进行测试

@RestController
public class ApolloController { @Value("${apollo.config.value}")
private Boolean cache; @GetMapping("/apollo")
public String quick(){
return "服务配置获取的值:" + cache;
}
}

在启动的时候,启动类需要加上@EnableApolloConfig注解开启配置中心

@SpringBootApplication
@EnableEurekaClient
//开启配置中心
@EnableApolloConfig
//@EnableDiscoveryClient
public class ApolloApplication extends SpringBootServletInitializer { public static void main(String[] args) {
SpringApplication.run(ApolloApplication.class, args);
} }

下面就需要启动项目进行测试了,注意在启动的时候会报一个错误,配置中心连接超时:

WARN 12344 --- [ngPollService-1] c.c.f.a.i.RemoteConfigLongPollService    : Long polling failed, will retry in 1 seconds. appId: spring-cloud-config-dev, cluster: default, namespaces: spring-cloud-management, 
long polling url: http://172.17.0.3:8080/notifications/v2?cluster=default&appId=spring-cloud-config-dev&ip=192.168.1.108&notifications=%5B%7B%22namespaceName%22%3A%22spring-cloud-management%22%2C%22notificationId%22%3A-1%7D%5D,
reason: Could not complete get operation [Cause: connect timed out]

原因是我们使用docker安装,docker容器内部会分配一个ip地址,此时我们只需要在idea上启动类添加 -Dapollo.configService=http://172.25.96.1:7800 指定config service地址。

配置完成后,再次启动发现启动成功了。我们使用postman调用刚刚写的接口:

发现配置信息已经获取到了,在配置中心修改一下参数的值,改为false再次发布:

再次调用postman:

发现值也已经更新成功了。到此我们的Apollo配置中心也就部署完毕了,感谢阅读。

使用Docker安装Apollo并使用SpringBoot连接配置中心的更多相关文章

  1. docker安装MySQL8,目录挂载、配置用户名密码、忽略表名大小写、连接数、特殊字符、时区

    原文:docker安装MySQL8,目录挂载.配置用户名密码.忽略表名大小写.连接数.特殊字符.时区 一.环境配置 1.系统:centos7.3 2.docker版本:Docker version 1 ...

  2. Docker安装mysql镜像并进行主从配置

    Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ...

  3. “连接配置中心失败,将无法进行正常管理”--腾讯通RTX管理器

    [故障现象]: 腾讯通RTX管理器提示“连接配置中心失败,将无法进行正常管理” [解决办法]: 在系统服务中启动“RTX_ConfigCenter”服务即可. 文章收集自网络

  4. docker 安装 apollo

    apollo作为携程开源的配置中心,很多大厂在使用,在此记录下安装历程 服务器环境: 安装mysql 1.拉取镜像 docker pull idoop/docker-apollo 2.新建3个数据库, ...

  5. RabbitMQ从概念到使用、从Docker安装到RabbitMQ整合Springboot【1.5w字保姆级教学】

    @ 目录 一.前言 二.RabbitMQ作用 1. 异步处理 2. 应用解耦 3. 流量控制 三.RabbitMQ概念 1. RabbitMQ简介 2. 核心概念 四.JMS与AMQP比较 五.Rab ...

  6. Docker安装及阿里云镜像加速器配置

    Docker安装 Windows系统安装就不用说了,因为Docker是开源的,所以,直接去官网:https://www.docker.com/下载安装包安装就行了 其实,Linux系统安装也很简单,照 ...

  7. Apollo(阿波罗)配置中心Java客户端使用指南使用指南

          Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管 ...

  8. 携程Apollo(阿波罗)配置中心本地开发模式不接入配置中心进行本地开发

    官方教程:https://github.com/ctripcorp/apollo/wiki/Java%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8 ...

  9. 携程Apollo(阿波罗)配置中心把现有项目的配置文件迁移到Apollo

    说明: 1.这个示例应该算是一个静态迁移,也就是说配置更新后要重启应用才能体现更新,目的是展示现有配置的如何迁移. 2.如果要实现更新配置后动态去更新而不重启应用的操作,比如ZK地址和数据库地址这些, ...

  10. 携程Apollo(阿波罗)配置中心Spring Boot迁移日志组件,使用配置中心进行管理的思路

    说明: 1.Spring Boot项目默认使用logback进行日志管理 2.logback在启动时默认会自动检查是否有logback.xml文件,如果有时会有限加载这个文件. 3.那么如果是用配置中 ...

随机推荐

  1. 快速上手Linux核心命令(四):文件内容相关命令

    @ 目录 前言 cat 合并文件或查看文件内容 more 分页显示文件内容 less 分页显示文件内容 head 显示文件内容头部 tail 显示文件内容尾部 tailf 跟踪日志文件 diff 比较 ...

  2. ntp导致其他线程卡顿原因总结

    这个是在项目开发中遇到的一个比较严重的问题,第一影响到主界面的播放卡顿,第二影响到我这边线程同样卡顿,按道理来说两个没有数据交互的线程应该没有任何影响,改为detach模式也没用,最后定位到居然是单独 ...

  3. 文章学习:TPRE:分布式门限代理重加密

    学习文章:TPRE:分布式门限代理重加密 前言 成方金科新技术实验室与隐语团队合作,构建了"基于国密的分布式门限代理重加密算法TPRE",为用户提供了一种安全.高效.自主可控的数据 ...

  4. 一条SQL如何被MySQL架构中的各个组件操作执行的?

    摘要:一条SQL如何被MySQL架构中的各个组件操作执行的,执行器做了什么?存储引擎做了什么?表关联查询是怎么在存储引擎和执行器被分步执行的?本文带你探探究竟! 本文分享自华为云社区<一条SQL ...

  5. 2022-10-06:以下go语言代码输出什么?A:[1 2 3] [1 2 3] ;B:[1 2 3] [3 4 5]; C:[1 2 3] [3 4 5 6 7 8 9];D:[1 2 3] [3

    2022-10-06:以下go语言代码输出什么?A:[1 2 3] [1 2 3] :B:[1 2 3] [3 4 5]: C:[1 2 3] [3 4 5 6 7 8 9]:D:[1 2 3] [3 ...

  6. 2020-11-24:n个物品每个物品都有一定价值,分给2个人,怎么分两个人的价值差最小?

    福哥答案2020-11-24: 背包问题:背包容量是SUM/2. 每个物体的体积是数的大小,然后尽可能的装满背包. golang代码如下: package main import ( "fm ...

  7. pages.json 文件:pages 节点

    pages uni-app 通过 pages 节点配置应用由哪些页面组成,pages 节点接收一个数组,数组每个项都是一个对象,其属性值如下: 属性 类型 默认值 描述 path String   配 ...

  8. css设置边框四角样式

    开发中使用css 伪类 是再常见不过的事情了,运用好了能轻松实现许多复杂的样式,大大减少使用图片消耗带宽的问题,今天我们就使用伪类来实现登录框的四角样式 html代码如下 <div class= ...

  9. 安装vue后 vue -V查不到版本号 添加环境变量没反应

    萌新一枚,今天听老大说后续有项目要用vue,于是找教程自己先看看, 验证vue是否安装成功时,提示 'vue' 不是内部命令,也不是可运行的程序 有说把vue路径添加环境变量的,试了一下,不行(后来看 ...

  10. 我们的智能化应用是需要自动驾驶(Autopilot)还是副驾驶(Copilot)

    自动驾驶Autopilot 是一个知识密集且科技含量很高的技术,不基于点什么很难把它讲的相对清楚. 副驾驶 Copilot 是一种由 AI 提供支持的数字助理,旨在为用户提供针对一系列任务和活动的个性 ...