官网安装参考
Apollo目前支持以下环境:
- DEV
- 开发环境
- FAT
- 测试环境,相当于alpha环境(功能测试)
- UAT
- 集成环境,相当于beta环境(回归测试)
- PRO
- 生产环境
这里安装两个环境, DEV UAT
准备了两台服务器, 一个环境一个数据库
其中DEV 安装在192.168.112.111
其中UAT 安装在192.168.112.112
安装mysql
mysql安装就省了, 两个环境共需要两个数据库,
我这里将portal 安装在111,所以111上要初始化两个库, 112就只要初始化一个库
数据库安装完毕后,初始化相关数据库,其中apolloconfigdb分别在两台数据库初始,portaldb则在其中一台执行,这里在192.168.112.111执行。
数据库表初始化完毕后,修改Apolloconfigdb中serverconfig表,将eureka.service.url 的value修改对应的IP地址。如http://192.168.112.111:8080/eureka/ ;112的也要修改
adminservice和configservice初始化
192.168.112.111 执行初始化
docker run -p 8080:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.111:3306/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
-d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice
docker run -p 8090:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.111:3306/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
-d -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice
192.168.112.112执行初始化
docker run -p 8080:8080 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.112:3308/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
-d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice
docker run -p 8090:8090 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.112:3308/ApolloConfigDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
-d -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice
更改配置
这点很重要,因为是docker运行,homePageUrl取的IP是docker的IP。这里要做一下修改,改成主机的IP以configservice 为例,进入容器内
docker exec -it apollo-configservice /bin/bash
ls一下,进入目录。 ll识别不了
cd apollo-configservice/scripts
vi startup.sh 编辑该文件,插入如下内容,然后保存退出。重启docker。图片所示位置
-Deureka.instance.homePageUrl=http://192.168.112.111:8080
adminservice则 插入如下内容
#docker exec -it apollo-adminservice /bin/bash
#cd apollo-adminservice/scripts
-Deureka.instance.homePageUrl=http://192.168.112.111:8090
上面是111为例子,112也是上面操作,只是IP不一样
portal端初始化
这里portal端安装在111上,执行如下命令
docker run -p 8070:8070 \
-e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.111:3306/ApolloPortalDB?characterEncoding=utf8" \
-e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
-e APOLLO_PORTAL_ENVS=dev,uat \
-e DEV_META=http://192.168.112.111:8080 -e uat_META=http://192.168.112.112:8080 \
-d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal
访问
192.168.112.111:8070,默认用户名apollo 密码 admin
springboot访问UAT下的属性
UAT的集群shenzhen创建属性name
配置环境
apollo:
meta: http://192.168.112.112:8080 # Apollo中的Eureka注册中心地址---UAT
cluster: shenzhen #指定Apollo集群,相同集群实例使用对应集群的配置 ---shenzhen
java代码
package com.lm.demo.config;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ConfigProperties {
@Value("${name}")
private String name;
@Value("${name2}")
private String name2;
}
package com.lm.demo.controller;
import com.ctrip.framework.apollo.Config;
import com.ctrip.framework.apollo.ConfigService;
import com.lm.demo.config.ConfigProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
@Autowired
private ConfigProperties configProperties;
@GetMapping("/getName2")
public String getName2(){
return configProperties.getName2();
}
}