(十) Docker compose 本地部署 apollo

文章目录

  • 1、apollo
  • 2、数据库准备
  • 3、启动后会用到的几个地址
  • 4、docker-compose运行 apollo
    • 方式一:使用容器 hostName 作为网络媒介
      • apollo 客户端通过宿主机端口 拉取配置(推荐)
      • apollo 客户端通过 自定义hostName 拉取配置
    • 方式二:使用端口映射+固定 ip 作为网络媒介
  • 6、客户端

1、apollo

https://www.apolloconfig.com/#/zh/deployment/quick-start-docker

单机单环境
在这里插入图片描述
单机双环境
在这里插入图片描述
单机三环境
在这里插入图片描述

2、数据库准备

  • 启动本地 mysql
  • 初始化数据库
CREATE DATABASE ApolloConfigDB;
CREATE DATABASE ApolloPortalDB;
  • 新增用户
    userapollo/userapollo
CREATEUSER'userapollo'@'%' IDENTIFIED BY'userapollo';
GRANTALL PRIVILEGES ON ApolloConfigDB.*TO'userapollo'@'%';
GRANTALL PRIVILEGES ON ApolloPortalDB.*TO'userapollo'@'%';
FLUSH PRIVILEGES;
  • 表结构&数据初始化
    https://github.com/apolloconfig/apollo/tree/master/scripts/sql

3、启动后会用到的几个地址

  • http://127.0.0.1:8070/
    Portal 登录地址,默认登录账户 apollo/admin

  • http://127.0.0.1:8080/
    Eureka 管理页面
    在这里插入图片描述

  • http://127.0.0.1:8080/services/config
    service-config 配置查询接口
    未来客户端通过下面 url 获取配置信息的拉取 url,即 homepageUrl 字段
    客户端访问 http://127.0.0.1:8080/services/config

[{"appName":"APOLLO-CONFIGSERVICE","instanceId":"config-service:apollo-configservice:8080","homepageUrl":"http://config-service:8080"}]
  • http://127.0.0.1:8070/system_info.html
    Portal 登录页面,查看 config-service、admin-service 运行状态
    在这里插入图片描述

  • http://127.0.0.1:8070/server_config_manage.html#/portal_db
    配置 apollo.portal.meta.servers

  • http://127.0.0.1:8070/server_config_manage.html#/config_db
    配置 eureka.service.url

4、docker-compose运行 apollo

须知1:https://blog.csdn.net/bestcxx/article/details/140250249

须知 2: 在启动顺序上,首次启动可能会失败,原因是 admin-service 、portal 需要等待 config-service 完全启动之后才能启动,这里建议首次启动后,重启 admin-service 和 portal
docker-compose 首次启动后,可以借助 Docker Desktop 管理Docker 容器,来进行重启操作
在这里插入图片描述

方式一:使用容器 hostName 作为网络媒介

  • 修改数据库配置
UPDATE `ApolloConfigDB`.`ServerConfig` SET `Value` = 'http://config-service:8080/eureka/' WHERE (`Id` = '1');
UPDATE `ApolloPortalDB`.`ServerConfig` SET `Value` = '{\"dev\":\"http://config-service:8080\"}' WHERE (`Id` = '8');

apollo 客户端通过宿主机端口 拉取配置(推荐)

  • JAVA_OPTS=-Deureka.instance.homePageUrl=http://127.0.0.1:8080
    客户端通过 http://127.0.0.1:8080/services/config 获得

[{"appName":"APOLLO-CONFIGSERVICE","instanceId":"config-service:apollo-configservice:8080","homepageUrl":"http://127.0.0.1:8080"}]
此时 homepageUrl 为宿主机 IP:端口,通过端口映射方式完成请求转发

version: '3.6'

services:
  config-service:
    image: apolloconfig/apollo-configservice
    container_name: apollo-config-service
    hostname: config-service
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://127.0.0.1:8080
    ports:
      - 8080:8080 # 宿主机端口 : 容器端口
    networks:
      apollo-network:

  admin-service:
    image: apolloconfig/apollo-adminservice
    container_name: apollo-admin-service
    hostname: admin-service
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - CONFIGSERVICE_URL=http://config-service:8080
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://admin-service:8090
    ports:
      - 8090:8090
    depends_on:
      - config-service
    networks:
      apollo-network:

  portal:
    image: apolloconfig/apollo-portal
    container_name: apollo-portal
    hostname: portal
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - APOLLO_PORTAL_ENVS=dev
      - DEV_META=http://config-service:8080
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://portal:8070
    ports:
      - 8070:8070
    depends_on:
      - config-service
      - admin-service
    networks:
      apollo-network:

networks:
  apollo-network:
    #driver: bridge
     

apollo 客户端通过 自定义hostName 拉取配置

  • 修改 宿主机 /etc/hosts 文件
127.0.0.1 config-service
  • docker-compose.yml
  • JAVA_OPTS=-Deureka.instance.homePageUrl=http://config-service:8080
    客户端通过 http://127.0.0.1:8080/services/config 获得

[{"appName":"APOLLO-CONFIGSERVICE","instanceId":"config-service:apollo-configservice:8080","homepageUrl":"config-service:8080"}]
此时 homepageUrl 为自定义 hostName:端口,宿主机将根据 /etc/hosts 配置将请求映射本机 127.0.0.1,然后通过端口映射方式完成转发,这种方式需要本地配置私有化域名

version: '3.6'

services:
  config-service:
    image: apolloconfig/apollo-configservice
    container_name: apollo-config-service
    hostname: config-service
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://config-service:8080
    ports:
      - 8080:8080 # 宿主机端口 : 容器端口
    networks:
      apollo-network:

  admin-service:
    image: apolloconfig/apollo-adminservice
    container_name: apollo-admin-service
    hostname: admin-service
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - CONFIGSERVICE_URL=http://config-service:8080
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://admin-service:8090
    ports:
      - 8090:8090
    depends_on:
      - config-service
    networks:
      apollo-network:

  portal:
    image: apolloconfig/apollo-portal
    container_name: apollo-portal
    hostname: portal
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - APOLLO_PORTAL_ENVS=dev
      - DEV_META=http://config-service:8080
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://portal:8070
    ports:
      - 8070:8070
    depends_on:
      - config-service
      - admin-service
    networks:
      apollo-network:

networks:
  apollo-network:
    #driver: bridge
     

方式二:使用端口映射+固定 ip 作为网络媒介

  • 修改数据库配置
UPDATE `ApolloConfigDB`.`ServerConfig` SET `Value` = 'http://192.168.128.2:8080/eureka/' WHERE (`Id` = '1');
UPDATE `ApolloPortalDB`.`ServerConfig` SET `Value` = '{\"dev\":\"http://192.168.128.2:8080\"}' WHERE (`Id` = '8');

  • docker-compose.yml
  • JAVA_OPTS=-Deureka.instance.homePageUrl=http://config-service:8080
    客户端通过 http://127.0.0.1:8080/services/config 获得

[{"appName":"APOLLO-CONFIGSERVICE","instanceId":"config-service:apollo-configservice:8080","homepageUrl":"config-service:8080"}]
此时 homepageUrl 为容器内部 hostName:端口,宿主机将根据 /etc/hosts 配置将请求映射本机 127.0.0.1,然后通过端口映射方式完成转发

version: '3.6'

services:
  config-service:
    image: apolloconfig/apollo-configservice
    container_name: apollo-config-service
    hostname: config-service
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://127.0.0.1:8080
    ports:
      - 8080:8080 # 宿主机端口 : 容器端口
    networks:
      apollo-network:
        ipv4_address: 192.168.128.2

  admin-service:
    image: apolloconfig/apollo-adminservice
    container_name: apollo-admin-service
    hostname: admin-service
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - CONFIGSERVICE_URL=http://192.168.128.2:8080
    ports:
      - 8090:8090
    depends_on:
      - config-service
    networks:
      apollo-network:
        ipv4_address: 192.168.128.3

  portal:
    image: apolloconfig/apollo-portal
    container_name: apollo-portal
    hostname: portal
    environment:
      - SPRING_DATASOURCE_URL=jdbc:mysql://host.docker.internal:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=userapollo
      - SPRING_DATASOURCE_PASSWORD=userapollo
      - APOLLO_PORTAL_ENVS=dev
      - DEV_META=http://192.168.128.2:8080
    ports:
      - 8070:8070
    depends_on:
      - config-service
      - admin-service
    networks:
      apollo-network:
        ipv4_address: 192.168.128.4

networks:
  apollo-network:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.128.0/24
     

6、客户端

{
  "apollo": {
    "AppId": "helloabp",
    "Env": "dev",
    "Cluster": "default",
    "MetaServer": "http://localhost:8080",
    "Namespaces": [
      "helloapollo.web.json"
    ]
  },
  "ClientId": "bestcxxLocal"
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/784581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

transformer网络学习

Transformer encoder-decoder模型之间共享的是Encoder最后一层输出的hidden-state。 GitHub - huggingface/transformers: 🤗 Transformers: State-of-the-art Machine Learning for Pytorch, TensorFlow, and JAX. Bert2Bert中,Encoder的hidden-state同…

阿里开源语音理解和语音生成大模型FunAudioLLM

近年来,人工智能(AI)的进步极大地改变了人类与机器的互动方式,例如GPT-4o和Gemin-1.5等。这种转变在语音处理领域尤为明显,其中高精度的语音识别、情绪识别和语音生成等能力为更直观、更类人的交互铺平了道路。阿里开源…

JAVA Tesseract OCR引擎

Tess4j是一个基于Tesseract OCR引擎的Java库, Tesseract库最初由惠普实验室于1985年开发&#xff0c;后来被Google收购并于2006年开源。识别效果不好&#xff0c;速度还慢&#xff0c;但是好早好早了。 一、POM依赖 <!--OCR识别https://digi.bib.uni-mannheim.de/tesserac…

library source does not match the bytecode for class SpringApplication

library source does not match the bytecode for class SpringApplication 问题描述&#xff1a;springboot源码点进去然后download source后提示标题内容。spring版本5.2.8.RELEASE&#xff0c;springboot版本2.7.18 解决方法&#xff1a;把spring版本改为与boot版本对应的6.…

昇思25天学习打卡营第5天|MindSpore网络模型构建

打卡 目录 打卡 模型类 模型网络&#xff1a;定义与使用 模型层级分解 nn.Flatten 张量转换-演示查看 nn.Dense 全连接层-演示查看 nn.ReLU 非线性激活层-演示查看 nn.SequentialCell 有序网络容器 nn.Softmax 多分类概率预测 模型参数 前置感受&#xff1a;总的来说…

前端面试题25(css常用的预处理器)

在前端开发领域&#xff0c;CSS预处理器在面试中经常被提及&#xff0c;其中最流行的三种预处理器是Sass、LESS和Stylus。下面分别介绍它们的特点和优势&#xff1a; 1. Sass&#xff08;Syntactically Awesome Style Sheets&#xff09; 优势&#xff1a; 变量&#xff1a;允…

【购物车案例】for循环为什么使用key

要做出一个简单的购物车界面。首先&#xff0c;有一个复选框&#xff0c;可以选择商品&#xff0c;后面紧跟的是商品名称&#xff0c;然后&#xff0c;是删除按钮&#xff0c;根据这个需求&#xff0c;先写出一个简单的界面&#xff0c;代码如下&#xff1a; <template>…

思路打开!腾讯造了10亿个角色,驱动数据合成!7B模型效果打爆了

世界由形形色色的角色构成&#xff0c;每个角色都拥有独特的知识、经验、兴趣、个性和职业&#xff0c;他们共同制造了丰富多元的知识与文化。 所谓术业有专攻&#xff0c;比如AI科学家专注于构建LLMs,医务工作者们共建庞大的医学知识库&#xff0c;数学家们则偏爱数学公式与定…

论文解析——Full Stack Optimization of Transformer Inference: a Survey

作者及发刊详情 摘要 正文 主要工作贡献 这篇文章的贡献主要有两部分&#xff1a; 分析Transformer的特征&#xff0c;调查高效transformer推理的方法通过应用方法学展现一个DNN加速器生成器Gemmini的case研究 1&#xff09;分析和解析Transformer架构的运行时特性和瓶颈…

人员定位系统的功能,你知道多少呢?

在此前的文章中&#xff0c;说到了人员定位系统用于化工厂定位这一用途来完善工厂管理&#xff0c;但同时&#xff0c;基于人员定位系统的强大功能&#xff0c;该系统的应用范围也要宽范的多&#xff0c;那么&#xff0c;本篇文章就来为大家介绍一下吧。 人员定位系统的功能简介…

阿里云存储的降本增效与运维

小浩负责公司存储架构层&#xff0c;需要确保存储层不会成为公司业务系统的性能瓶颈&#xff0c;让数据读写达到最佳性能。那么小浩可以从哪些方面着手优化性能呢&#xff1f;他继续求助系统架构师大雷。 小浩&#xff1a;雷哥&#xff0c;PD反馈公司系统最近响应很慢&#xff…

电子设备常用的胶水有哪些?

目录 1、502胶水 2、703胶水 3、704胶水 4、AB胶 5、红胶 6、Underfill 7、导电胶 8、UV胶 9、热熔胶 10、环氧树脂胶 11、硅酮胶 12、聚氨酯胶 13、丙烯酸胶 14、丁基胶 1、502胶水 502胶水&#xff0c;也被称为瞬间胶或快干胶&#xff0c;是一种非常常见的粘合…

加密与安全_密钥体系的三个核心目标之不可否认性解决方案

文章目录 Pre概述不可否认性数字签名&#xff08;Digital Signature&#xff09;证书是什么证书使用流程 PKICA证书层级多级证书证书链是如何完成认证的&#xff1f; 其他疑问1. Alice能直接获取Bob的公钥&#xff0c;是否还需要证书&#xff1f;2. 为什么即使能直接获取公钥也…

2-28 基于matlab提取出频域和时域信号的29个特征

基于matlab提取出频域和时域信号的29个特征&#xff0c;主运行文件feature_extraction&#xff0c;fre_statistical_compute和time_statistical_compute分别提取频域和时域的特征&#xff0c;生成的29个特征保存在生成的feature矩阵中。程序已调通&#xff0c;可直接运行。 2-2…

一键高效处理,批量缩放PNG图片,按比例轻松调整,高效工作从此开始!

在数字时代&#xff0c;图片已经成为我们生活中不可或缺的一部分。无论是工作汇报、项目展示还是日常分享&#xff0c;图片都扮演着至关重要的角色。然而&#xff0c;当面对大量需要调整尺寸的PNG图片时&#xff0c;你是否曾经感到过困扰和繁琐&#xff1f; 第一步&#xff0c;…

ViewPager

作用 实现翻页的效果。 1、在activity_main.xml中创建ViewPager <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"…

【Java14】构造器

Java中的构造器在创建对象&#xff08;实例&#xff09;的时候执行初始化。Java类必须包含一个或一个以上的构造器。 Java中的构造器类似C中的构造函数。 Java中对象&#xff08;object&#xff09;的默认初始化规则是&#xff1a; 数值型变量初始化为0&#xff1b;布尔型变量…

为什么KV Cache只需缓存K矩阵和V矩阵,无需缓存Q矩阵?

大家都知道大模型是通过语言序列预测下一个词的概率。假定{ x 1 x_1 x1​&#xff0c; x 2 x_2 x2​&#xff0c; x 3 x_3 x3​&#xff0c;…&#xff0c; x n − 1 x_{n-1} xn−1​}为已知序列&#xff0c;其中 x 1 x_1 x1​&#xff0c; x 2 x_2 x2​&#xff0c; x 3 x_3 x…

EAI四个层次服务-系统架构师(二十六)

1、&#xff08;重点&#xff09;系统应用集成提供了4个不同层次服务&#xff0c;最上层服务是&#xff08;&#xff09;服务。 解析: EAI&#xff08;Enterprise Application Integration&#xff09;系统应用集成&#xff0c;相关概念。 实施EAI必须保证&#xff1a;应用程…

2024年信息素养大赛图形化编程小低组复赛真题-附答案 6547网

2024年全国青少年信息素养大赛图形化编程小低组复赛真题 题目总数&#xff1a;6 总分数&#xff1a;100 第1部分 第 1 题 问答题 【编程实现】点击小绿旗&#xff0c;实现将鱼的所有造型印到舞台区 【具体要求】 1. 将鱼显示出来 全部擦除所有内容 2. 将鱼的造型设…