使用Docker安装Apollo并使用SpringBoot连接配置中心
上篇文章我们学习了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¬ifications=%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连接配置中心的更多相关文章
- docker安装MySQL8,目录挂载、配置用户名密码、忽略表名大小写、连接数、特殊字符、时区
原文:docker安装MySQL8,目录挂载.配置用户名密码.忽略表名大小写.连接数.特殊字符.时区 一.环境配置 1.系统:centos7.3 2.docker版本:Docker version 1 ...
- Docker安装mysql镜像并进行主从配置
Docker安装mysql镜像并进行主从配置 1.下载需要的mysql版本镜像 docker pull mysql:5.6 2.启动mysql服务实例(基本启动) #启动主mysql docker r ...
- “连接配置中心失败,将无法进行正常管理”--腾讯通RTX管理器
[故障现象]: 腾讯通RTX管理器提示“连接配置中心失败,将无法进行正常管理” [解决办法]: 在系统服务中启动“RTX_ConfigCenter”服务即可. 文章收集自网络
- docker 安装 apollo
apollo作为携程开源的配置中心,很多大厂在使用,在此记录下安装历程 服务器环境: 安装mysql 1.拉取镜像 docker pull idoop/docker-apollo 2.新建3个数据库, ...
- RabbitMQ从概念到使用、从Docker安装到RabbitMQ整合Springboot【1.5w字保姆级教学】
@ 目录 一.前言 二.RabbitMQ作用 1. 异步处理 2. 应用解耦 3. 流量控制 三.RabbitMQ概念 1. RabbitMQ简介 2. 核心概念 四.JMS与AMQP比较 五.Rab ...
- Docker安装及阿里云镜像加速器配置
Docker安装 Windows系统安装就不用说了,因为Docker是开源的,所以,直接去官网:https://www.docker.com/下载安装包安装就行了 其实,Linux系统安装也很简单,照 ...
- Apollo(阿波罗)配置中心Java客户端使用指南使用指南
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境.不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限.流程治理等特性,适用于微服务配置管 ...
- 携程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 ...
- 携程Apollo(阿波罗)配置中心把现有项目的配置文件迁移到Apollo
说明: 1.这个示例应该算是一个静态迁移,也就是说配置更新后要重启应用才能体现更新,目的是展示现有配置的如何迁移. 2.如果要实现更新配置后动态去更新而不重启应用的操作,比如ZK地址和数据库地址这些, ...
- 携程Apollo(阿波罗)配置中心Spring Boot迁移日志组件,使用配置中心进行管理的思路
说明: 1.Spring Boot项目默认使用logback进行日志管理 2.logback在启动时默认会自动检查是否有logback.xml文件,如果有时会有限加载这个文件. 3.那么如果是用配置中 ...
随机推荐
- Pwn系列之Protostar靶场 Stack1题解
(gdb) disasse main Dump of assembler code for function main: 0x08048464 <main+0>: push ebp 0x0 ...
- 2022-08-15:k8s安装pgadmin,yaml如何写?
2022-08-15:k8s安装pgadmin,yaml如何写? 答案2022-08-15: yaml如下: # 依赖postgres.yaml apiVersion: apps/v1 kind: D ...
- 2020-01-04:mysql里的innodb引擎的数据结构,你有看过吗?
福哥答案2020-01-04: 面试官刚开始问我看过mysql源码没,然后问了这个问题.回答B+树,过不了面试官那关.答案来自<MySQL技术内幕 InnoDB存储引擎 第2版>第四章,时 ...
- 2021-01-31:Redis集群方案不可用的情况有哪些?
福哥答案2021-01-31:[答案来自此链接:](https://www.zhihu.com/question/442112697)一个集群模式的官方推荐最小最佳实践方案是 6 个节点,3 个 Ma ...
- 献给转java的c#和java程序员的数据库orm框架
献给转java的c#和java程序员的数据库orm框架 一个好的程序员不应被语言所束缚,正如我现在开源java的orm框架一样,如果您是一位转java的c#程序员,那么这个框架可以带给你起码没有那么差 ...
- 【重学C++】04 | 说透C++右值引用(上)
文章首发 [重学C++]04 | 说透C++右值引用(上) 引言 大家好,我是只讲技术干货的会玩code,今天是[重学C++]的第四讲,在前面<03 | 手撸C++智能指针实战教程>中,我 ...
- GPT虚拟直播Demo系列(二)|无人直播间实现虚拟人回复粉丝
摘要 虚拟人和数字人是人工智能技术在现实生活中的具体应用,它们可以为人们的生活和工作带来便利和创新.在直播间场景里,虚拟人和数字人可用于直播主播.智能客服.营销推广等.接入GPT的虚拟人像是加了超强b ...
- vim 之中 U 命令的浅析
以下文章来源于CSDN,作者黑翼天使56,本文章经原作者同意后授权转载. 今天看 vim帮助文档的 user-manual 的第二章,发现了还有U(大写)这个命令,于是反复实验,略微搞懂了一点它的用处 ...
- k8s实战案例之部署redis单机和redis cluster
1.在k8s上部署redis单机 1.1.redis简介 redis是一款基于BSD协议,开源的非关系型数据库(nosql数据库),作者是意大利开发者Salvatore Sanfilippo在2009 ...
- P1585 魔法阵 题解
题意: 题目传送门 可以看做一个人手中有一些宝石,并将宝石分成两组,一组的编号为 1 至 n×m/2,二组为 n×m/2+1 至 n×m+1.当两组两个宝石编号相差为 n×m/2 为一对.现在要遍历一 ...