Apollo:1.7.1
完成Apollo部署后,使用浏览器进入8070
端口
以下是一些常用操作示例
使用默认账号密码apollo/admin登陆
页面提示配置出错
新建项目
根据数据库配置,默认创建dev环境
新建命名空间
命名空间中新增并发布配置
读取配置
查看应用接入文档
应用接入
JAVA
Springboot推荐配置
第一步:resource目录新建 bootstrap.properties文件和apollo-env.properties文件
resource目录下新建bootstrap.properties文件
# Apollo配置 # AppId app.id=WXOauthAPI # meta server地址,为方便区分不同环境,配置到apollo-env.properties # apollo.meta=xxx.xxx.xxx.xxx # 在应用启动阶段是否向Spring容器注入被托管的properties文件配置信息 apollo.bootstrap.enabled=true # 指定命名空间 apollo.bootstrap.namespaces=application # 将Apollo配置加载提到初始化日志系统之前 apollo.bootstrap.eagerLoad.enabled=true
resource目录下新建apollo-env.properties文件
# 配置apollo不同环境的地址 ## 若为集群部署,支持输入多个地址,使用逗号(,)分隔 # dev(开发环境) dev.meta=http://172.16.2.14:8080 # fat(测试环境) #fat.meta=http://apollo.fat.xxx.com # uat(预生产环境) #uat.meta=http://apollo.uat.xxx.com # pro(生产环境) #pro.meta=http://apollo.xxx.com
踩坑
项目启动时报错
错误信息 这个一定需要注意:如果是云服务器,一定要注意该错误信息,是因为云服务器是随机给的ip地址,跟实际服务器的地址不一定相同,所以会报错
Sync config failed, will retry. Repository class com.ctrip.framework.apollo.internals.RemoteConfigRepository, reason: Load Apollo Config failed - appId: bitongchong_bos, cluster: default, namespace: application, url: http://xxx.xxx.xxx.xxx:8080/configs/bitongchong_bos/default/application?ip=192.168.102.1&messages=%7B%22details%22%3A%7B%22bitongchong_bos%2Bdefault%2Bapplication%22%3A6%7D%7D&releaseKey=20190803112627-2b5dd0e414976d16 [Cause: Could not complete get operation [Cause: connect timed out]]
解决方案
此种错误是由于部署到云服务器时,eureka实体地址默认解析成内网,需要映射外网地址修改启动文件
docker部署解决方案
修改apollo-configservice和apollo-adminservice容器的启动参数(由于两个容器除名称外结构相同,只给出一个修改示例)
这里只用了 apollo-configservice修改实例,apollo-adminservice修改同理,只需要修改一下就可以,
进入容器
docker exec -it apollo-configservice bash
修改启动文件
vi /apollo-configservice/scripts/startup.sh
找到JAVA_OPTS指令,在最后补充eureka参数
export JAVA_OPTS="$JAVA_OPTS -Dserver.port=$SERVER_PORT -Dlogging.file=$LOG_DIR/$SERVICE_NAME.log -XX:HeapDumpPath=$LOG_DIR/HeapDumpOnOutOfMemoryError/ -Deureka.instance.ip-address=172.16.5.31"
退出docker:exit 。必须退出docker才可以重新启动docker容器
重启容器
docker restart apollo-configservice
虚拟机部署解决方案
第二步:
配置一下测试环境: 在运行环境 VM options加上 -Denv=环境名称,例如 :-Denv=dev
第三步:具体代码实现: 其实就只需要用 Value注解读取key为 test的值就可以,123 是默认值,当读取不到时默认123
@Value("${test:123}") private String test; // 第一个测试方法 @RequestMapping("/ApolloInfo/get") public String getApolloInfo() { return "123456---"+test; }
参考
删除namespace后,重新创建同名namespace显示已存在相同的命名空间
问题描述
解决方案
普通删除并不会清除对应namespace的数据,使用管理员工具删除namespace即可。