- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
上篇文章我们学习了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安装Apollo并使用SpringBoot连接配置中心的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
SpringBoot-Admin 服务监控 简单介绍 Spring Boot Actuator 是 Spring Boot 自带的一个功能模块, 提供了一组已经开箱即用的生产环境下常用
我想查找通过关键字匹配字段 nameEnglish 或 nameChinese 的模型列表。我花了一个多小时谷歌搜索但我做不到。请帮忙。 Springboot Mongo 入门示例 https://s
(请注意:在调查 this issue 时,我更好地发现了我在此处介绍的问题根源) 我对 Hibernate 和 SpringBoot 非常陌生。我的项目涉及一个搜索引擎,其中索引(javafx 客户
我最近有一个 Web 应用程序从 springboot 升级到 springboot 2。当我将其部署到 Tomcat 8 时,它似乎启动了,但没有完全启动。 在 localhost.2019-09-
我是 Spring boot 的新手...我在运行 Controller 时遇到问题, Description: Field todoService in com.springboot.todoCon
我有一个SpringBoot应用程序,它使用以下配置与PostgreSQL通信,通过AWS Beanstrik部署:。在我将AWS Aurora证书更新为rds-ca-ecc384-g1之前,一切都很
实在是不知道标题写什么了 可以在评论区给个建议哈哈哈哈 先用这个作为标题吧 尝试使用 国内给出的 AI 大模型做出一个 可以和 AI 对话的 网站出来 使用 智普AI 只能 在控制
一、介绍 在实际的软件系统开发过程中,由于业务的需求,在代码层面实现数据的脱敏还是远远不够的,往往还需要在数据库层面针对某些关键性的敏感信息,例如:身份证号、银行卡号、手机号、工资等信息进行加密存储
Selenium Selenium是一个用于Web应用程序自动化测试的开源工具套件。它主要用于以下目的: 浏览器自动化:Selenium能够模拟真实用户在不同浏览器(如Chrome、Fire
一、简介 在实际的项目开发过程中,经常需要用到邮件通知功能。例如,通过邮箱注册,邮箱找回密码,邮箱推送报表等等,实际的应用场景非常的多。 早期的时候,为了能实现邮件的自动发送功能,通常会使用 Ja
SpringBoot:基于redis自定义注解实现后端接口防重复提交校验 一、添加依赖 org.springframework.boot spring
SpringBoot:使用Jackson完成全局序列化配置 一、测试准备 com.fasterxml.jackson.core jackson-cor
springboot:整合rocketmq 一、简易消息操作 生产者整合mq 导入依赖 org.springframework.boot
springboot:常用注解 一、spring常用注解 包扫描+组件标注注解 @Component:泛指各种组件 @Controller、@Service、@Repository都可以称为@Comp
我们经常需要在两个系统之间进行一些数据的交互,这时候我们就需要开发数据交互接口。 一般来说,遇到比较多的接口有HTTP接口、WebService接口、FTP文件传输。今天我要来学习一下在SpringB
背景 近期项目上线,甲方要求通过安全检测才能进行验收,故针对扫描结果对系统进行了一系列的安全加固,本文对一些常见的安全问题及防护策略进行介绍,提供对应的解决方案 跨站脚本攻击 XSS常发生于论坛评论等
1.排除 Spring-boot-starter 默认的日志配置 将原本的 spring-boot-starter 改为 org.springframework.boot
springboot:解决跨域问题 一、跨域简介 URL的组成: // 协议 + 域名(子域名 + 主域名) + 端口号 + 资源地址 http://www.baidu.com:8080/ 只要协
一、自定义Starter 的思路: 创建一个Maven工程,创建三个模块 一个模块为demo-app,一个模块为demo-module,一个模块为demo-module-springboot-star
1.pom.xml 4.0.0 org.springframework.boot spring-boot-starter-parent
我是一名优秀的程序员,十分优秀!