前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >docker部署apollo

docker部署apollo

原创
作者头像
阿彬学java
发布于 2025-01-24 06:29:33
发布于 2025-01-24 06:29:33
930
举报
文章被收录于专栏:dockerdocker

1. 拉取镜像

代码语言:bash
AI代码解释
复制
docker pull apolloconfig/apollo-configservice:latest
docker pull apolloconfig/apollo-adminservice:latest
docker pull apolloconfig/apollo-portal:latest

2. 创建sql目录,将以下三个文件放入此目录下

  • 注意:前2个文件由于内容过大,故放置链接
  • apolloconfigdb.sql(下载链接)
  • apolloportaldb.sql(下载链接)
  • init-user.sql
代码语言:sql
AI代码解释
复制
-- init-user.sql
use mysql;
update user set host = '%' where user = 'root';
alter user 'root'@'%' identified with mysql_native_password by '123456';
alter user 'root'@'%' identified with mysql_native_password by '123456';
flush privileges;

-- init-user.sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'root'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. 编写docker-compose.yml文件

代码语言:yaml
AI代码解释
复制
version: '3'
services:
  apollo-configservice:
    image: apolloconfig/apollo-configservice:latest
    networks:
      - apollo-network
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=123456
      - SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
      - EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://apollo-configservice:8080/eureka/
      - EUREKA_INSTANCE_PREFER_IP_ADDRESS=true
    depends_on:
      - mysql
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 15

  apollo-adminservice:
    image: apolloconfig/apollo-adminservice:latest
    networks:
      - apollo-network
    ports:
      - "8090:8090"
    depends_on:
      - apollo-configservice
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloConfigDB?characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=123456
      - SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
      - EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://apollo-adminservice:8090/eureka/
      - EUREKA_INSTANCE_PREFER_IP_ADDRESS=true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/health"]
      interval: 30s
      timeout: 10s
      retries: 15
    restart: always

  apollo-portal:
    image: apolloconfig/apollo-portal:latest
    networks:
      - apollo-network
    ports:
      - "8070:8070"
    depends_on:
      - apollo-configservice
      - apollo-adminservice
    environment:
      - SPRING_PROFILES_ACTIVE=dev
      - SPRING_DATASOURCE_URL=jdbc:mysql://mysql:3306/ApolloPortalDB?characterEncoding=utf8
      - SPRING_DATASOURCE_USERNAME=root
      - SPRING_DATASOURCE_PASSWORD=123456
      - SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
      - APOLLO_PORTAL_ENVS=dev
      - DEV_META=http://apollo-configservice:8080
      - EUREKA_CLIENT_SERVICE_URL_DEFAULTZONE=http://apollo-configservice:8080/eureka/
      - EUREKA_INSTANCE_PREFER_IP_ADDRESS=true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8070/health"]
      interval: 30s
      timeout: 10s
      retries: 5

  mysql:
    image: mysql/mysql-server:8.0.26
    container_name: mysql_apollo
    networks:
      - apollo-network
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: ApolloConfigDB,ApolloPortalDB
    volumes:
      - mysql-data:/var/lib/mysql
      - ./sql/:/docker-entrypoint-initdb.d
    ports:
      - "3306:3306"
    healthcheck:
      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
      interval: 10s
      timeout: 5s
      retries: 10

volumes:
  mysql-data:

networks:
  apollo-network:
    driver: bridge

4. 修改ApolloConfigDB.ServerConfig表的eureka.service.url=http://172.31.0.3:8080/eureka/

  • 注意:由于我这里是使用docker部署的,所以需要作如下修改:
代码语言:sql
AI代码解释
复制
修改前:eureka.service.url: http://localhost:8080/eureka/
修改后:eureka.service.url: http://172.31.0.3:8080/eureka/
注意:
	- 这里的 172.31.0.3 是 apollo-configservice 容器的ip地址
	- 此ip地址使用 docker inspect apollo-configservice 命令查询获取,"IPAddress"选项值

5. 与SpringBoot集成

5.1 maven引入依赖

代码语言:bash
AI代码解释
复制
<dependency>
  <groupId>com.ctrip.framework.apollo</groupId>
  <artifactId>apollo-client</artifactId>
  <version>2.0.1</version>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <version>2.1.7.RELEASE</version>
</dependency>

5.2 application.yml配置文件

代码语言:yaml
AI代码解释
复制
app:
  id: apollo
apollo:
  meta: http://localhost:8080
server:
  port: 8081

5.3 SpringBoot启动参数增加

代码语言:bash
AI代码解释
复制
-Dapollo.configService=http://localhost:8080 -Denv=DEV 
  • 配置步骤:
    • 第一步:
  • 第二步:

5.4 启动类增加@EnableApolloConfig注解

代码语言:java
AI代码解释
复制
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@EnableApolloConfig
@SpringBootApplication
public class ApolloApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApolloApplication.class, args);
    }
}

5.5 编写测试代码

代码语言:java
AI代码解释
复制
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    @Value("${test-config}")
    private String someConfigValue;

    @GetMapping("/config")
    public String getConfig() {
        return someConfigValue;
    }
}

5.6 浏览器输入 http://localhost:8081/config 地址

6. apollo配置中心配置步骤

6.1 浏览器地址栏输入 http://localhost:8070/

6.2 增加应用

6.3 添加配置项

6.4 发布配置项

  • 注意:如不发布配置项,则应用程序无法感知到

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信支付异常性能测试
原文链接:https://wetest.qq.com/lab/view/426.html
WeTest质量开放平台团队
2018/12/05
1.1K0
微信支付异常性能测试
基于TC和netem实现网络异常情况的模拟
笔者最近在对一个公网传输方案做测试时,需要模拟一些公网中遇到的极端情况(延迟、丢包、重复、损坏和乱序等)。惊喜地发现,Linux原生已经集成了TC和netem这对组合,只需要几个命令即可快速地实现上述功能。
皮皮熊
2018/12/04
8K3
Linux网络模拟
在Linux下, 通常使用netem或bridge来模拟网络不稳定情况。 在模拟过程中, 最好使用虚拟机。 如果是远程机器, 那么网络环境模拟需要两块网卡, 而桥模拟最好使用三块网卡。 就是需要附加一个网卡, 用作管理。
用户3765803
2019/03/05
3.2K0
linux 下使用 tc 模拟网络延迟和丢包-使用 linux 模拟广域网延迟 - Emulating wide area network delays with Linux
tc 是linux 内置的命令;使用man pages 查看 我们看到,其功能为 show / manipulate traffic control settings,可对操作系统进行流量控制;
西湖醋鱼
2020/12/30
4.6K0
Linux高级流量控制tc使用
在做MHA测试的时候,有一个重要的环节就是测试MHA Manager节点和Master节点的网络情况,如果产生了抖动,那么MHA本身提供了一个参数secondary_check来保证,但是如果你的部署环境中是一主一从的话,这个参数就不会起作用了,因为latest slave和oldest slave是同一个库,简单来说,连不上就是连不上了,至于切还是不切,这个还不好说。我们测试的场景下,有时候切,有时候不切。所以我们原本测试的MHA0.57版本就降级为了0.56,仔细测试发现,其实也存在这样的问题,综合再三
jeanron100
2018/03/22
4.7K0
linux下使用tc控制和模拟网络流量
netem 与 tc: netem 是 Linux 2.6 及以上内核版本提供的一个网络模拟功能模块。该功能模块可以用来在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况。使用 Linux 2.6 (或以上) 版本内核的很多发行版 Linux 都开启了该内核功能,比如 Fedora、Ubuntu、Redhat、OpenSuse、CentOS、Debian 等等。 tc 是Linux 系统中的一个工具,全名为 traffic control(流量控制)。tc 可以用来控制 netem 的工作模式,也就是说,如果想使用 netem ,需要至少两个条件,一个是内核中的 netem 功能被包含,另一个是要有 tc 。
sunsky
2021/01/13
4.9K0
如何模拟弱网环境?
运维过程中,最复杂的问题,莫过于网络的问题,而网络问题最烦的就是无法复现,这篇介绍一个强大的网络模拟工具Netem
李俊鹏
2020/06/11
3K0
如何模拟弱网环境?
弱网环境搭建之 Linux tc & iptables 详解
笔者有一个需要搭建弱网环境来复现某个网络问题的需求,因此开始在网络中寻找能够快速搭建弱网环境的方式。
siri
2022/11/18
4.1K0
极端场景下jraft的验证
最近1-2周, 业务侧基于性能和一致性的需求,测试和验证基于sofa-jraft的框架。由于上线后事关生产环境的稳定性,于是加入调研jraft/raft相关领域调研,确保生产环境即使在极端情况下,也在我们考量的范围之内。
richard.xia_志培
2022/06/14
1.1K0
linux|性能参数测试
为自动调优定义socket使用的内存。第一个值是为socket发送缓冲区分配的最少字节数;第二个值是默认值(该值会被wmem_default覆盖),缓冲区在系统负载不重的情况下可以增长到这个值;第三个值是发送缓冲区空间的最大字节数(该值会被wmem_max覆盖)。
heidsoft
2023/03/18
2.3K0
linux|性能参数测试
数据传输 | DTLE 在弱网络环境下的性能报告
3. 在两台 DTLE 服务器上添加网络带宽限制以及增加延迟(经测试网络延迟配置只对发送有效,故需要在源端和目标端同时添加 TC 规则,每端延迟配置为预期延迟的一半)。
爱可生开源社区
2021/04/07
6600
数据传输 | DTLE 在弱网络环境下的性能报告
在CVM上模拟VPC网络故障原理笔记
日常在给客户做稳定性治理时,像实例级别的不可用、主从切换、重启、性能等维度的场景做的比较多,随着治理的深入,大家慢慢把目光专项应用程序更不可控的场景:网络数据包异常。
AIOPS
2023/09/30
3580
learning :network simulator plugin
Vpp 包括一个功能相当强大的网络模拟器插件,它可以模拟网络端到端的延迟往返时间和配置的网络丢包率及报文乱序功能。它非常适合在指定的延迟、带宽、丢包、乱序条件下评估 TCP 堆栈的性能。此功能和Linux系统下使用 tc 和 netem命令组合模拟客户环境网络波动情况一样:
dpdk-vpp源码解读
2023/06/23
3340
learning :network simulator plugin
性能测试环境问题:性能测试环境配置不当,影响测试结果
是山河呀
2025/02/09
1110
tc--流控 转
如果你对 Linux 流控感兴趣,如果你需要搭建高性能的 Linux 网关 , 本文将会使你受益颇多。
阿dai学长
2019/04/03
3.6K0
tc--流控
                                                                            转
性能场景之网络模拟
TC(traffic control)是Linux中的流量控制工具。它是通过控制netem来实现的网络场景模拟。该工具是直接对物理网卡生效的,如果是逻辑网卡,则该控制无效。如果是用的虚拟机,可视虚拟网卡为物理网卡。
高楼Zee
2019/07/17
9160
性能怪兽!香橙派 Kunpeng Pro 开发板深度测评,带你解锁无限可能
大家好,我是猫头虎。随着科技的不断进步,嵌入式开发和物联网(IoT)技术的应用变得越来越广泛,各类高性能开发板也应运而生。这些开发板在物联网设备、智能家居、自动化控制等多个领域发挥着重要作用。近年来,市场上推出了多款高性能开发板,而其中,香橙派 Kunpeng Pro 因其强大的计算能力和丰富的接口配置,受到了广泛的关注和好评。
猫头虎
2024/05/28
6710
性能怪兽!香橙派 Kunpeng Pro 开发板深度测评,带你解锁无限可能
Linux 流量控制全攻略?看这里~
WebjxCom 友情提示: 公司一台服务器,网络环境太高,那台服务器和源服务器连接下载,就跑到 400M-500M,为了控制一下,所以研究了一下 TC. 来做流量控制。给他控制到小点,不要让这一台占了所有的网络。TC 很是强大啊,很多所谓的硬件路由器,都是基于这个做的。
用户6543014
2019/10/25
2.3K0
新特性解读 | binlog 压缩
二进制日志(binlog)是 MySQL 日志结构中重要的部分;记录了数据的更改操作,用于数据恢复、数据复制以及审计。然而在众多实际场景中经常发生高并发引起 binlog 暴涨的问题将挂载点空间占满以及主从网络带宽成为瓶颈时主从延时过大。8.0.20 版本推出 binlog 压缩功能,有效缓解甚至解决此类问题。
爱可生开源社区
2020/05/26
1.5K0
How to make transparent bridge with Slackware Linux.
大家好,又见面了,我是你们的朋友全栈君。 What is a transparent bridge and why to use it? Few lines of dry theory first
全栈程序员站长
2022/09/13
3.3K0
How to make transparent bridge with Slackware Linux.
相关推荐
微信支付异常性能测试
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档