docker下安装apollo多环境(DEV 和UAT)

官网安装参考

ApolloA reliable configuration management systemhttps://www.apolloconfig.com/#/zh/deployment/distributed-deployment-guide

Apollo目前支持以下环境:

  • DEV
    • 开发环境
  • FAT
    • 测试环境,相当于alpha环境(功能测试)
  • UAT
    • 集成环境,相当于beta环境(回归测试)
  • PRO
    • 生产环境

这里安装两个环境, DEV   UAT

准备了两台服务器, 一个环境一个数据库

其中DEV 安装在192.168.112.111

其中UAT 安装在192.168.112.112

安装mysql

 docker安装最新mysql8

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();
    }

}

效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值