(十) Docker compose 本地部署 apollo

news2025/7/16 0:46:32

文章目录

  • 1、apollo
  • 2、数据库准备
  • 3、启动后会用到的几个地址
  • 4、docker-compose运行 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:8081\"}' WHERE (`Id` = '8');
  • 修改 宿主机 /etc/hosts 文件
127.0.0.1 config-service
  • docker-compose.yml
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\":\"192.168.128.2:8080\"}' WHERE (`Id` = '8');

  • docker-compose.yml
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:
        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
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://admin-service:8090
    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
      - JAVA_OPTS=-Deureka.instance.homePageUrl=http://portal:8070
    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": [
      "helloabp.web.json"
    ]
  },
  "ClientId": "bestcxxLocal"
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微软Edge浏览器全解析:从速度到安全性的全面体验

微软Edge浏览器,自2015年首次亮相以来,已经成为了浏览器市场上不可忽视的一股力量。它不仅集成了Windows 10的许多原生功能,还在速度和安全性上进行了大量的优化。本文将全面解析微软Edge浏览器的各项特性,带您领略这款浏览器的魅…

Linux笔记之三

Linux笔记之三 一、用户组管理二、磁盘管理三、进程管理总结 一、用户组管理 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux系统对用户组的管理涉及用户组的添加、删除和修改。…

基于Java+SpringMvc+Vue技术的图书管理系统的设计与实现(60页论文参考)

博主介绍:硕士研究生,专注于Java技术领域开发与管理,以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年,拥有近12年的管理工作经验,拥有较丰富的技术架构思想、较扎实的技术功底和资深的项目管理经…

防火墙概述

1、防火墙 防火墙顾名思义就是防止火灾发生时,火势烧到其它区域,使用由防火材料砌的墙。在网络安全中,防火墙的作用就是保护本地网络不受到外部网络或恶意程序的伤害。 防火墙的核心任务是控制和防护,即通过安全策略识别流量并做…

Kafka抛弃Zookeeper后如何启动?

Kafaka如何下载 官网地址 目前Kafka最新的版本就是3.7.1 我们可以看到下面这两个版本信息?什么意思呢? Scala 2.12 - kafka_2.12-3.7.1.tgz (asc, sha512)Scala 2.13 - kafka_2.13-3.7.1.tgz (asc, sha512) 我们应该知道,一个完整的Kafka实…

【Excel】把一列姓名快速填充到多列表格

目录标题 1. 输入A1 → 向右填充 → 输入A5 → 向右填充2. 选中2行单元格 → 向下填充3. CtrlH → 替换 → 全部替换 1. 输入A1 → 向右填充 → 输入A5 → 向右填充 2. 选中2行单元格 → 向下填充 3. CtrlH → 替换 → 全部替换

用Goaccess对Web及雷池WAF日志实现可视化分析

君衍. 一、项目环境介绍二、Goaccess1、Goaccess介绍2、存储方式3、配置选项4、自定义日志/日期格式5、特殊格式说明符 三、雷池访问日志1、配置文件改变2、docker配置3、示例测试 四、Goaccess安装1、安装依赖2、编译安装 五、Goaccess对Nginx日志分析1、常用命令参数2、终端模…

【server】springboot 整合 redis

1、redis 使用模式 1.1 单机模式 1.1.1 编译安装方式 1.1.1.1 下载 Redis的安装非常简单,到Redis的官网(Downloads - Redis),下载对应的版本,简单几个命令安装即可。 1.1.1.2 编译安装 tar xzf redis-stable.tar.…

【链表】【双指针】1、环形链表+2、环形链表 II+3、相交链表

2道简单1道中等,链表的双指针相关问题就告一段落,下一步刷新的题目。 1、环形链表(难度:简单) 该题对应力扣网址 AC代码 常见思路,slow指针每次走一步,fast指针每次走两步,如果fa…

大语言模型基础

大语言基础 GPT : Improving Language Understanding by Generative Pre-Training 提出背景 从原始文本中有效学习的能力对于减轻自然语言处理中对监督学习的依赖至关重要。很多深度学习方法需要大量人工标注的数据,限制了它们在很多领域的应用,收集更…

Learn To Rank

在信息检索中,给定一个query,搜索引擎召回一系列相关的Documents,然后对这些Documents进行排序,最后将Top N的Documents输出。 排序问题最关注的是各Documents之间的相对顺序关系,而不是各个Documents的预测分最准确。…

如何优化 PostgreSQL 中对于自关联表的查询?

文章目录 一、理解自关联表查询二、分析性能问题的可能原因(一)缺少合适的索引(二)大量数据的笛卡尔积(三)复杂的查询逻辑 三、优化策略及解决方案(一)创建合适的索引(二…

Rejetto HFS 服务器存在严重漏洞受到攻击

AhnLab 报告称 ,黑客正在针对旧版本的 Rejetto HTTP 文件服务器 (HFS) 注入恶意软件和加密货币挖矿程序。 然而,由于存在错误, Rejetto 警告用户不要使用 2.3 至 2.4 版本。 2.3m 版本在个人、小型团队、教育机构和测试网络文件共享的开发…

7.pwn 工具安装和使用

关闭保护的方法 pie: -no-pie Canary:-fno-stack-protector aslr:查看:cat /proc/sys/kernel/randomize_va_space 2表示打开 关闭:echo 0>/proc/sys/kernel/randomize_va_space NX:-z execstack gdb使用以及插件安装 是GNU软件系统中的标准调试工具,此外GD…

2024/7/7周报

文章目录 摘要Abstract文献阅读题目问题本文贡献问题描述图神经网络Framework实验数据集实验结果 深度学习MAGNN模型相关代码GNN为什么要用GNN?GNN面临挑战 总结 摘要 本周阅读了一篇用于多变量时间序列预测的多尺度自适应图神经网络的文章,多变量时间序…

Windows密码凭证获取

Windows HASH HASH简介 hash ,一般翻译做散列,或音译为哈希,所谓哈希,就是使用一种加密函数进行计算后的结果。这个 加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。…

C# 异步编程Invoke、beginInvoke、endInvoke的用法和作用

C# 异步编程Invoke、beginInvoke、endInvoke的用法和作用 一、Invoke Invoke的本质只是一个方法,方法一定是要通过对象来调用的。 一般来说,Invoke其实用法只有两种情况: Control的Invoke Delegate的Invoke 也就是说,Invoke前…

动态规划|剑指 Offer II 093. 最长斐波那契数列

如果数组 arr 中存在三个下标 i、j、k 满足 arr[i]>arr[j]>arr[k] 且 arr[k]arr[j]arr[i],则 arr[k]、arr[j] 和 arr[i] 三个元素组成一个斐波那契式子序列。由于数组 arr 严格递增,因此 arr[i]>arr[j]>arr[k] 等价于 i>j>k。 把这道题…

7.7作业

搭建一个场景: 将学生的信息,以顺序表的方式存储(堆区),并且实现封装函数 : 1】顺序表的创建 2】判满 3】判空 4】往顺序表里增加学生 5】遍历 6】任意位置插入学生 7】任意位置删除学生 8】修改 9】查找&a…

刷题之删除有序数组中的重复项(leetcode)

删除有序数组中的重复项 这题简单题&#xff0c;双指针&#xff0c;一个指针记录未重复的数的个数&#xff0c;另一个记录遍历的位置。 以下是简单模拟&#xff0c;可以优化&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {int l0…