• 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 执行初始化

    1. docker run -p 8080:8080 \
    2. -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.111:3306/ApolloConfigDB?characterEncoding=utf8" \
    3. -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
    4. -d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice
    5. docker run -p 8090:8090 \
    6. -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.111:3306/ApolloConfigDB?characterEncoding=utf8" \
    7. -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
    8. -d -v /tmp/logs:/opt/logs --name apollo-adminservice apolloconfig/apollo-adminservice

    192.168.112.112执行初始化

    1. docker run -p 8080:8080 \
    2. -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.112:3308/ApolloConfigDB?characterEncoding=utf8" \
    3. -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
    4. -d -v /tmp/logs:/opt/logs --name apollo-configservice apolloconfig/apollo-configservice
    5. docker run -p 8090:8090 \
    6. -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.112:3308/ApolloConfigDB?characterEncoding=utf8" \
    7. -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
    8. -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上,执行如下命令

    1. docker run -p 8070:8070 \
    2. -e SPRING_DATASOURCE_URL="jdbc:mysql://192.168.112.111:3306/ApolloPortalDB?characterEncoding=utf8" \
    3. -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=root \
    4. -e APOLLO_PORTAL_ENVS=dev,uat \
    5. -e DEV_META=http://192.168.112.111:8080 -e uat_META=http://192.168.112.112:8080 \
    6. -d -v /tmp/logs:/opt/logs --name apollo-portal apolloconfig/apollo-portal

     访问


    192.168.112.111:8070,默认用户名apollo 密码 admin

    springboot访问UAT下的属性

    UAT的集群shenzhen创建属性name

    配置环境

    1. apollo:
    2. meta: http://192.168.112.112:8080 # Apollo中的Eureka注册中心地址---UAT
    3. cluster: shenzhen #指定Apollo集群,相同集群实例使用对应集群的配置 ---shenzhen

     

    java代码

    1. package com.lm.demo.config;
    2. import lombok.AllArgsConstructor;
    3. import lombok.Data;
    4. import lombok.NoArgsConstructor;
    5. import org.springframework.beans.factory.annotation.Value;
    6. import org.springframework.stereotype.Component;
    7. @Component
    8. @Data
    9. @NoArgsConstructor
    10. @AllArgsConstructor
    11. public class ConfigProperties {
    12. @Value("${name}")
    13. private String name;
    14. @Value("${name2}")
    15. private String name2;
    16. }
    1. package com.lm.demo.controller;
    2. import com.ctrip.framework.apollo.Config;
    3. import com.ctrip.framework.apollo.ConfigService;
    4. import com.lm.demo.config.ConfigProperties;
    5. import org.springframework.beans.factory.annotation.Autowired;
    6. import org.springframework.web.bind.annotation.GetMapping;
    7. import org.springframework.web.bind.annotation.RestController;
    8. @RestController
    9. public class ConfigController {
    10. @Autowired
    11. private ConfigProperties configProperties;
    12. @GetMapping("/getName2")
    13. public String getName2(){
    14. return configProperties.getName2();
    15. }
    16. }

    效果

  • 相关阅读:
    【python】懒人福利,通过Python的JIRA库操作JIRA,自动批量提交关闭bug,提高效率
    JavaSE:异常处理
    开发中,遇到后端返回的数据列表不更新怎么办?
    QT 6.5下载安装及配置教程
    【机器学习】聚类【Ⅲ】高斯混合模型讲解
    zsh: command not found: conda问题解决
    嵌入式C语言这一篇就够了
    iPhone通讯录如何完整导入到新手机
    SpringBoot 学习(七)Swagger
    Spark(2)-基础tranform算子(一)
  • 原文地址:https://blog.csdn.net/liuming690452074/article/details/125360839