上篇文章我们学习了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. #Powerquery 数据结构基础 一维数据与二维数据

    本文参考了采悟老师的文章,推荐大家看原文,本文为笔记随笔 https://mp.weixin.qq.com/s?__biz=MzA4MzQwMjY4MA==&mid=2484068871&am ...

  2. 2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0、1两种值 map[i][j] == 0 表示(i,j)位置是空座 map[i][j] == 1 表示(i,j)位置坐了人 根据防

    2023-01-14:给定一个二维数组map,代表一个餐厅,其中只有0.1两种值 map[i][j] == 0 表示(i,j)位置是空座 map[i][j] == 1 表示(i,j)位置坐了人 根据防 ...

  3. 500行代码手写docker-以新命名空间运行程序

    (2)500行代码手写docker-以新命名空间运行程序 本系列教程主要是为了弄清楚容器化的原理,纸上得来终觉浅,绝知此事要躬行,理论始终不及动手实践来的深刻,所以这个系列会用go语言实现一个类似do ...

  4. AcWing 243. 一个简单的整数问题2-(区间修改,区间查询)

    给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一: C l r d,表示把 A[l],A[l+1],-,A[r]都加上 d. Q l r,表示询问数列中第 l∼r个数的和. ...

  5. JS加载机制

    做开发多年后发现自己思维任然只定位在功能的实现:忽略了很多代码最终的实现,加载机制等 那我们接下来就借助几篇博客来理理天天看见的js:理理他究竟是怎么过执行的 一.代码检测 首先浏览器会对所有js 进 ...

  6. K8S | 核心原理分析

    目录 一.背景 二.持续集成 三.K8S架构 1.核心组件 2.分层结构 3.核心能力 3.1 发现与负载 3.2 调度 3.3 自动伸缩 四.应用案例 1.服务部署 2.交互流程 五.参考源码 整体 ...

  7. 【Python&RS】遥感影像的像素坐标转地理坐标(仿射变换)

    ​         GDAL(Geospatial Data Abstraction Library)是一个在X/MIT许可协议下的开源栅格空间数据转换库.它利用抽象数据模型来表达所支持的各种文件格式 ...

  8. 【后端面经-数据库】MySQL的存储引擎简介

    目录 MySQL的存储引擎 0. 存储引擎的查看和修改 1. MyISAM 2. InnoDB 3. MEMORY 4. MERGE 5. 总结 6. 参考博客 MySQL的存储引擎 mysql主要有 ...

  9. 【接口测试】Postman(三)-变量与集合

    变量与集合 ​ 在Postman中,我们进行接口测试一般是以集合为单位,而在日常应用中,我们会经常使用到变量.下面我们将介绍一下变量和集合的一些用法. 文章目录导航: 目录 变量与集合 一.变量 1. ...

  10. Android Studio中SQLite的使用,主要介绍sqlite插入和读出图片(ViewBinder)的操作方法

    sqlite简介 本人最近在写一个小的安卓项目,开发app过程中用到了安卓自带的sqlite.本文主要对sqlite图片操作进行介绍,其他存入文本之类的操作和普通数据库一样,众所周知,sqlite是一 ...