Apollo目前支持以下环境:
这里安装两个环境, DEV UAT
准备了两台服务器, 一个环境一个数据库
其中DEV 安装在192.168.112.111
其中UAT 安装在192.168.112.112
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的也要修改
- 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
- 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端安装在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
- apollo:
- meta: http://192.168.112.112:8080 # Apollo中的Eureka注册中心地址---UAT
- cluster: shenzhen #指定Apollo集群,相同集群实例使用对应集群的配置 ---shenzhen
- 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();
- }
-
- }