- 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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!